WMI: 尝试连接远程机器时出现“RPC 服务器不可用”(HRESULT: 0x800706BA)异常。

14

我正在使用以下代码使用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)
检查了此知识库文章中描述的所有步骤,远程机器上一切正常。
用户在远程机器上是管理员。
尝试使用 Wbemtest 工具,结果相同。
有人知道发生了什么吗?

可能是[连接到WMI:某些机器上出现0x800706ba错误(但不是所有机器)]的重复问题(https://dev59.com/80bRa4cB1Zd3GeqPwQKn)。 - Hans Passant
3个回答

8

如果您使用的是Win7,则必须以管理员身份运行应用程序。您还可以尝试不同的connOptions.Impersonation属性值。您是否打开了远程机器上的RPC端口?尝试在两台计算机上完全关闭防火墙。


2
如果在防火墙禁用的情况下可以正常工作,则尝试在命令提示符中键入:Netsh firewall set service RemoteAdmin。 - Nickolodeon
1
好的建议。谢谢。我稍微配置了一下我的防火墙,现在一切都正常工作。 - vasyl
或者您可以将WMI添加为防火墙的例外。 - radu florescu

4
此外,您需要在Windows防火墙中启用Windows Management Instrumentation(WMI)规则。
1] Windows防火墙。 2] 允许应用程序或功能通过Windows防火墙。 3] 启用Windows Management Instrumentation(WMI)的特权。
要使用Windows防火墙启用或禁用WMI规则:
1. 在“控制面板”中,单击“安全”,然后单击“Windows防火墙”。 2. 单击“更改设置”,然后单击“例外”选项卡。 3. 在“例外”窗口中,选择“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

在我的情况下,我正在尝试使用C#通过WMI在远程服务器上终止java.exe进程。这个解决方案对我很有效。谢谢! - Atul K.
启用特权 = 通过防火墙启用 WMI 流量。 - Kiquenet

1

如果你仍然有问题,可以尝试打开下面的链接。

远程连接到WMI

我遇到了这个问题,即使我关闭了所有防火墙也无法解决。

运行下面的命令后,我的问题得到了解决。

  1. netsh advfirewall firewall set rule group="windows management instrumentation (wmi)" new enable=yes

  2. netsh advfirewall firewall add rule dir=in name="DCOM" program=%systemroot%\system32\svchost.exe service=rpcss action=allow protocol=TCP localport=135

  3. netsh advfirewall firewall add rule dir=in name ="WMI" program=%systemroot%\system32\svchost.exe service=winmgmt action = allow protocol=TCP localport=any

  4. netsh advfirewall firewall add rule dir=in name ="UnsecApp" program=%systemroot%\system32\wbem\unsecapp.exe action=allow

  5. netsh advfirewall firewall add rule dir=out name ="WMI_OUT" program=%systemroot%\system32\svchost.exe service=winmgmt action=allow protocol=TCP localport=any


``` 使用netsh命令设置Windows防火墙规则,以便允许远程管理和监视。这些规则允许WMI、DCOM和其他相关服务通过防火墙进行通信。 ```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接