2016-09-24 81 views
0

我正嘗試創建一個應用程序,該應用程序使用WMI檢索有關本地網絡上的計算機的信息。當我運行它時,我得到一個訪問被拒絕的錯誤。這裏是代碼:使用WMI無法訪問遠程計算機的硬件信息:訪問被拒絕

private void GetHDDdetails() 
{ 
    ConnectionOptions options = new ConnectionOptions(); 
    options.Username = "username"; 
    options.Password = "password"; 
    options.Impersonation = ImpersonationLevel.Impersonate; 
    ManagementScope oMs = new ManagementScope("\\\\remoteHostName\\root\\cimv2", options); 
    ObjectQuery oQuery = new ObjectQuery("SELECT Size FROM Win32_DiskDrive"); 
    ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery); 
    ManagementObjectCollection oCollection = oSearcher.Get(); 


    foreach (ManagementObject obj in oCollection) 
    { 
     hddBox.Text = obj["Size"].ToString(); 
    } 
} 

我已經用這個帖子的佔位符替換了上面的一些信息,例如用戶名和密碼。 我嘗試過的一些事情是:在兩臺計算機上禁用防火牆,確保TCP NetBIOS服務和RCP和WMI服務都在兩者上運行。我正在使用的帳戶是本地計算機上的管理員。我在網上找到的所有東西都告訴我要檢查這些,但這顯然是別的。 如果有人能指引我正確的方向,那會很棒。

回答

0

請檢查使用wbemtest您可以從遠程機器訪問信息。我希望你正確地取代remoteHostName。 如果可以,請更改身份驗證級別。

scope.Options.EnablePrivileges = true; 
scope.Options.Authentication = AuthenticationLevel.PacketPrivacy;