WMI 的“访问被拒绝”异常

ADI*_*DIL 5 c# wmi

我正在研究 WMI。我想访问远程系统信息。以下代码适用于环回或本地主机,但是当我尝试访问远程机器时,它显示以下异常错误:

访问被拒绝。(来自 HRESULT:0X8005(E_ACCESSDENIED) 的异常)

在 2 个系统之间使用 switch 时。

RPC 服务器不可用。(来自 HRESULT 的异常:0x800706BA)

当两个系统直接连接时。


两个系统上的操作系统:Windows Service Pack 2。
防火墙 = 被阻止。
远程过程服务 = 正在运行。

工具:.NET Visual Studio 2008 C#

代码:

try
{
    ConnectionOptions _Options = new ConnectionOptions();
    ManagementPath _Path = new ManagementPath(s);

    ManagementScope _Scope = new ManagementScope(_Path, _Options);
    _Scope.Connect();
    ManagementObjectSearcher srcd = new ManagementObjectSearcher("select * from Win32_DisplayConfiguration");
    foreach (ManagementObject obj in srcd.Get())
    {
        //listBox5.Items.Add(obj.Properties.ToString());
        foreach (PropertyData aProperty in obj.Properties)
        {
            listBox1.Items.Add(aProperty.Name.ToString() + " : " + aProperty.Value);
        }
    }
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

Shi*_*iji 0

可能有很多事情,但首先您需要:

  • 在防火墙中打开 RPC 流量
  • 启用远程rpc调用

请参阅: http: //support.microsoft.com/kb/895085(尽管这涵盖了略有不同的问题,但解决方案是相关的)