我想在远程计算机上运行查询(例如CIM_Memory),在这种情况下,它是一个虚拟机。我在Powershell中使用此代码:
Get-WmiObject CIM_Memory -ComputerName IPADDRESS -Credential USERNAME
当然还有实际的IP和用户名。两个操作系统(均为Win7)都启用了RemoteAdmin。
我得到了这个例外:
Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)
由于它是带有UAC功能的Win7,因此用户可以获得访问令牌。所以有这个注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ LocalAccountTokenFilterPolicy
将此设置为1后,仍然会得到相同的异常。可能是什么问题呢?
您是否阅读过MSDN上的WMI Troubleshooting部分?以下是关于您的错误的说法:
0x80070005 - E_ACCESS_DENIED - DCOM安全性拒绝访问。
用户无法通过DCOM远程访问计算机。通常,连接到具有不同操作系统版本的远程计算机时会发生DCOM错误。
在dcomcnfg中为用户授予远程启动和远程激活权限。右键单击我的电脑 - >属性在COM安全下,单击两个部分的“编辑限制”。为您希望远程访问,远程启动和远程激活的用户提供服务。然后转到DCOM Config,找到“Windows Management Instrumentation”,并为用户提供远程启动和远程激活。有关更多信息,请参阅在不同操作系统之间连接
强烈建议您启用ps远程处理(如果可以)。这样您就可以告诉目标计算机运行本地wmi调用并向您报告。
在防火墙,随机端口方面,WMI存在许多问题。