異なるユーザーとして実行されているPowerShell 5.1(x86)でInterop.DSOFile.dll関数とクラスを使用する場合、このエラーが発生します。私が使用しているアカウントは、dllを含むフォルダへの完全な権限を持つAD機能アカウントです。私は必要な仕事のために自分のADアカウントよりもアクセスが多いので、このアカウントを使用する必要があります。0引数を持つ.ctorを呼び出す例外:CLSID {ID}のコンポーネントのCOMクラスファクトリを取得できませんでした。 HRESULT:0x80070005(E_ACCESSDENIED)
私は自分のユーザーアカウントで問題なく実行できますが、機能アカウントを使用しようとすると、タイトルにエラーが表示されます。
[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機能アカウントを追加しましたが、成功しませんでした。
このアカウントには、レジストリキーを読み取るための十分な権限がありますか?私はマイクロソフト(sysinternals)からprocmonをダウンロードし、実行し、コードを実行し、停止し、アクセス違反を検索します*(またはあなたのために最も効果的な何かをフィルタリングまたはカウントする)* –
Thanks Lieven、答え。 –