2013-03-20 67 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. 嘗試在服務器上暫時關閉防火牆。