2

リモート WMI 呼び出しが失敗する理由について、システムからより多くの情報を収集するためのアイデアを探しています。

ユーザーがリモート マシンで WMI アクセスを行うには、どのアクセス許可/権利が必要ですか?の詳細な手順 役に立ちましたが、誤って何かを見逃したか、環境に合わせて構成する必要があるものがあります。

.NET 4.0 C# コードを実行すると、次の例外が表示されます (以下のスニペット)。

System.UnauthorizedAccessException が発生しました メッセージ = アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))
Source=System.Management StackTrace: System.Management.ThreadDispatch.Start() で System.Management.ManagementScope.Initialize() で System.Management.ManagementScope.Connect() で MyNamespace。 MyClass.GetWmiInfo() in...

これは、エラーが発生するコードです。Connect()の呼び出しで例外がスローされます。

var scope = new ManagementScope("\\\\HOSTNAME\\root\\cimv2")
{
    Options =
    {
        Impersonation = ImpersonationLevel.Impersonate,
        Password = "password",
        Username = "domain\\username"
    }
};

scope.Connect();

コードは Windows 7 コンピューターで実行されており、WMI 接続のターゲットは Windows XP コンピューターです。注: 2 つの役割を逆にすると、同様の問題が発生します。

ターゲット コンピュータのセキュリティ ログにエラーが記録されていません。

資格情報が使用されているユーザーをターゲット コンピューターの Administrators グループに追加すると、への呼び出しがConnect()成功するため、まだ付与されていない特権またはアクセスが原因で問題が発生しているように見えます。

通常、アクセス拒否エラーが発生した場合、より詳細なログのエントリを見つけるか、regmonまたはfilemonを実行して有用な情報を取得できます。しかし、この WMI / DCOM エラーにより、他にどこで詳細情報を探すべきかわかりません。

どんな提案でも大歓迎です!

更新: WBEMTest.exeを使用してテストしたところ、管理者として実行しない限り、アクセスも拒否されることがわかりました。このツールを引き続き使用して、問題をさらに切り分けようとしています。

4

0 に答える 0