2013-03-20 66 views
1

我有这样一段代码远程访问:试图通过WMI使用C#

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; 
    } 

与该代码我想远程访问另一台PC,虽然WMI。密码和用户名是100%正确的(我用WMIC /节点对它们进行测试:PC /用户名:名/密码:密码和这个工作),但我得到拒绝访问

从HRESULT

(例外:0X80070005( E_ACCESSDENIED))

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

+0

你是一个域名或任何东西?您可能必须在用户名中指定您的域名,或者如果您正在这样做,您可能不需要等等,还请检查您的密码以查找可能不会被转义的特殊字符。 – JMK 2013-03-20 13:56:29

+0

嗯,我试图域\\用户(双\\因为转义),但没有奏效。密码只有一个点,但没有其他的特殊功能。我严重不明白为什么这不起作用。 – Yatekii 2013-03-20 19:00:12

+0

您尝试访问另一台电脑的帐户是否具有足够的权限进行连接? IE是一个网络管理员,例如? – AssaultingCuccos 2013-03-29 13:29:55

回答

0

你可以用管理员凭据尝试:

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

不工作..当我正在寻找帮助文章之前试过这个..谢谢你的试用:) – Yatekii 2013-03-20 19:00:49

0

检查Services+(高级Windows服务管理器)的代码中包含所有你需要有关WMI win32_service时什么。

排除故障或调试:

  1. 确保计算机和服务器在同一个域
  2. 删除你的代码证书,使一个EXE形成你的代码,然后运行 的EXE为特权用户。
  3. 使用Services+(上述)或SERVICES.MSC连接到 服务器。
  4. 确保RPC服务正在远程服务器上运行。
  5. 尝试在服务器上暂时关闭防火墙。