別のユーザーとして実行されている PowerShell 5.1 (x86) で Interop.DSOFile.dll 関数とクラスを使用すると、このエラーが発生します。私が使用しているアカウントは、dll を含むフォルダーに対して完全な権限を持つ AD 機能アカウントです。必要な作業のために、自分の AD アカウントよりも多くのアクセス権があるため、このアカウントを使用する必要があります。
自分のユーザー アカウントで次のコードを問題なく実行できますが、機能するアカウントを使用しようとすると、タイトルにエラーが表示されます。
[System.Reflection.Assembly]::LoadFrom('C:\Path\To\Interop.DSOFile.dll')
New-Object DSOFile.OleDocumentPropertiesClass
エラーが発生します:
New-Object : Exception calling ".ctor" with "0" argument(s): "Retrieving the
COM class factory for component with CLSID
{58968145-CF05-4341-995F-2EE093F6ABA3} failed due to the following error:
80070005 Access is denied. (Exception from HRESULT: 0x80070005
(E_ACCESSDENIED))."
At line:1 char:1
+ New-Object DSOFile.OleDocumentPropertiesClass
+ CategoryInfo : InvalidOperation: (:) [New-Object], MethodInvoca
tionException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.Power
Shell.Commands.NewObjectCommand
CLSID が存在し、機能アカウントを使用して表示できることを確認しました。
gci 'HKLM:\SOFTWARE\Classes\CLSID' | ?{$_.PSChildName -match '58968145-CF05-4341-995F-2EE093F6ABA3'}
Property : {(default)}
PSPath :
Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE
\Classes\CLSID\{58968145-CF05-4341-995F-2EE093F6ABA3}
PSParentPath :
Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE
\Classes\CLSID
PSChildName : {58968145-CF05-4341-995F-2EE093F6ABA3}
PSDrive : HKLM
PSProvider : Microsoft.PowerShell.Core\Registry
PSIsContainer : True
SubKeyCount : 2
View : Default
Handle : Microsoft.Win32.SafeHandles.SafeRegistryHandle
ValueCount : 1
Name : HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{58968145-CF05-4341-9
95F-2EE093F6ABA3}
Dcomcnfg.exe\DCOM Config を使用してアカウントにアクセス権を付与することを参照する同様の Stackoverflow の質問からのソリューションを使用しようとしました。Com+ 構成
- [コントロール パネル] - > [管理者] -> [コンポーネント サービス] -> [DCOM 構成] に移動します。
- Microsoft Word 97 - 2003 のプロパティを開く
- 一般 -> 認証レベル: なし
- セキュリティ -> 3 つの権限をすべてカスタマイズして、全員を許可する
また、AD 機能アカウントをローカルの管理者グループに追加しましたが、成功しませんでした。