我正在寻找从系统中收集有关远程 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()
成功,因此问题似乎确实是由于尚未授予的权限或访问权限造成的。
通常,当我遇到拒绝访问错误时,我将能够在日志中找到提供更多详细信息的条目,或者能够运行regmon或filemon来捕获一些有用的信息。但是有了这个 WMI / DCOM 错误,我不知道在哪里可以找到更多信息。
任何建议都非常感谢!
更新:我使用WBEMTest.exe进行了测试,发现访问也被拒绝,除非我以管理员身份运行。我正在尝试继续使用此工具以进一步隔离问题。