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() 在...

这是发生错误的代码。调用Connect()时会引发异常。

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

scope.Connect();

代码在 Windows 7 计算机上运行,​​WMI 连接的目标是 Windows XP 计算机。注意:如果我颠倒这两个角色,我会看到类似的问题。

我没有看到目标计算机的安全日志中记录了任何错误。

如果我将正在使用其凭据的用户添加到目标计算机上的管理员组,则调用Connect()成功,因此问题似乎确实是由于尚未授予的权限或访问权限造成的。

通常,当我遇到拒绝访问错误时,我将能够在日志中找到提供更多详细信息的条目,或者能够运行regmonfilemon来捕获一些有用的信息。但是有了这个 WMI / DCOM 错误,我不知道在哪里可以找到更多信息。

任何建议都非常感谢!

更新:我使用WBEMTest.exe进行了测试,发现访问也被拒绝,除非我以管理员身份运行。我正在尝试继续使用此工具以进一步隔离问题。

4

0 回答 0