2

ドメインとスタンドアロンの両方で、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 として実行されているため、これらの設定で十分だと思います。

4

1 に答える 1

0

問題を単純化しすぎているか、完全に理解していない可能性がありますが、マシンのローカルアカウントからの資格情報のみを持つサービスを介してリモートWMI プロバイダーにアクセスしようとしている場合、そのような試みは常に失敗するようです (設計上)。 . MACHINE\account から OTHERMACHINE\account または DOMAIN\account への認証パスはありません。繰り返しますが、私が単純化しすぎたり誤解したりしている場合は、お詫び申し上げます。

于 2012-07-28T03:43:31.460 に答える