尝试使用C#通过wmi远程访问

时间:2013-03-20 13:46:06

标签: c# .net wmi remote-access

我有这段代码:

private ManagementScope CreateNewManagementScope(string server)
    {
        string serverString = "\\\\" + server + "\\root\\cimv2";

        ConnectionOptions options = new ConnectionOptions();
        options.Username = "name";
        options.Password = "password";

        ManagementScope scope = new ManagementScope(serverString, options);
        scope.Connect();

        return scope;
    }

使用该代码我试图通过WMI远程访问另一台PC。密码和用户名是100%正确的(我用wmic / node测试了它们:pc /用户名:名称/密码:pwd,这有用)但是我被拒绝访问

  

(HRESULT异常:0x80070005(E_ACCESSDENIED))

任何想法我做错了什么?我正在使用Win 7 / C#/ .NET 4.0 感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

您可以尝试使用管理员凭据:

string serverString = @"\\" + strIPAddress + @"\root\cimv2"

答案 1 :(得分:0)

检查其他计算机安全事件日志上记录的内容,因为它将为您提供访问权限错误的线索。

我非常确定您可以在查看TechNet文章"Connecting to WMI Remotely Starting with Windows Vista"及相关文章后解决此问题。特别是这部分: "Setting DCOM Security to Allow a User to Access a Computer Remotely"

答案 2 :(得分:0)

检查Services+(高级Windows服务管理器)的代码包含有关WMI Win32_Service的所有内容。

进行故障排除或调试:

  1. 确保计算机和服务器位于同一个域中
  2. 删除您的代码凭据并在EXE表单中输入代码然后运行 EXE作为特权用户。
  3. 使用Services+(如上所述)或Services.msc连接到 服务器
  4. 确保RPC服务正在远程服务器上运行。
  5. 尝试暂时关闭服务器上的防火墙。