我正在使用以下代码使用WMI连接到远程计算机:
ConnectionOptions connOptions = new ConnectionOptions();
connOptions.Impersonation = ImpersonationLevel.Impersonate;
connOptions.EnablePrivileges = true;
connOptions.Username = "admin";
connOptions.Password = "password";
ManagementScope scope = new ManagementScope(String.Format(@"\\{0}\ROOT\CIMV2", remoteMachine), connOptions);
scope.Connect();
我遇到以下异常:RPC服务器不可用。 (HRESULT异常:0x800706BA)
检查了所有描述的in this knowledgebase article步骤,远程计算机上的一切正常。
用户是远程计算机上的管理员。
尝试过Wbemtest工具,结果相同
有没有人知道发生了什么?
答案 0 :(得分:8)
如果您在Win7下,则必须以管理员身份运行应用程序。您还可以为connOptions.Impersonation属性尝试不同的值。你在远程机器上打开RPC端口了吗?尝试在两台计算机上关闭防火墙altogeter。
答案 1 :(得分:4)
此外,您需要在Windows防火墙中启用Windows Management Instrumentation(WMI)规则。
1] Windows防火墙。
2]通过Windows防火墙允许应用程序或功能 3]为Windows Management Instrumentation(WMI)启用权限。
使用Windows防火墙启用或禁用WMI规则
- 在控制面板中,点击安全,然后点击Windows防火墙。
- 点击更改设置,然后点击例外标签。
- 在例外窗口中,选中 Windows Management Instrumentation(WMI)的复选框,以通过启用WMI流量 防火墙即可。
醇>要停用WMI流量,请清除该复选框。
您还可以在命令提示符下通过防火墙启用或禁用WMI流量。
使用WMI 规则组命令提示符启用或禁用WMI流量
在命令提示符处使用以下命令。键入以下内容以启用通过防火墙的WMI流量。
netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes
键入以下命令以禁用通过防火墙的WMI流量。
netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=no
答案 2 :(得分:1)
仍有问题,请按照以下链接为您提供帮助。
即使我的所有防火墙都关闭,我也面临这个问题。
在命令运行下面,我的问题就解决了。
netsh advfirewall防火墙设置规则组=" Windows管理 仪器仪表(wmi)" new enable = yes
netsh advfirewall防火墙添加规则dir = in name =" DCOM" program =%systemroot%\ system32 \ svchost.exe service = rpcss action = allow protocol = TCP localport = 135
netsh advfirewall防火墙添加规则dir = in name =" WMI" program =%systemroot%\ system32 \ svchost.exe service = winmgmt action = 允许protocol = TCP localport = any
netsh advfirewall防火墙添加规则dir = in name =" UnsecApp" program =%systemroot%\ system32 \ wbem \ unsecapp.exe action = allow
- 醇>
netsh advfirewall防火墙添加规则dir = out name =" WMI_OUT" program =%systemroot%\ system32 \ svchost.exe service = winmgmt action = allow protocol = TCP localport = any