ドメインとスタンドアロンの両方で、WMI 経由で多くのリモート システムに接続する C# アプリケーションがあります。このプログラムは、wmi に資格情報を提供し、偽装を使用します。(コンソールから) 手動で実行すると、問題なく接続され、すべて問題ありません。ただし、この同じ .exe が (ローカル ユーザーとして実行されている) サービスから呼び出されると、ManagementScope で Connect() を呼び出すと、常に 0x80070005 (E_ACCESSDENIED) を取得します。
私はかなり検索しましたが、同様のトピックに関する一見有用な記事がたくさん見つかりましたが、どれも機能しません. これと MS のサイトでの彼の [その後の投稿][2] は非常に似ていますが、クエリを実行しようとしたときではなく、接続時に失敗したため、ローカル システムのアクセス許可の問題のように感じます。
DCOM アクセス許可、WMI リモート アクセス許可、偽装オプション、ポリシー オプション、Windows ファイアウォールなどをいじりましたが、すべて結果がありません。助けてくれる人はいますか?
編集:もう少し掘り下げて、MSからこの小さなページを見つけました。これは、接続中に発生するDCOMの問題であり、特にWMIエラーではないエラー(0x80070005)を実際に示しています。彼らが与える原因は、1. 資格情報の失敗、または 2. DCOM の起動/リモート アクティベーションのアクセス許可です。私のプログラムは、同じ資格情報を使用して手動で実行すると機能するため、DCOM の問題であると想定する必要があります。SYSTEM、LOCAL SERVICE、INTERACTIVE、および Administrators を許可するように Remote/Local Activation & Launch を設定しましたが、それでも失敗します。サービスは Local System として実行されているため、これらの設定で十分だと思います。