2012-06-06 71 views
0

目前我使用下面的方法來獲取硬件信息(網絡適配器,處理器,硬盤驅動器)獲取Windows服務器

ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
ManagementObjectSearcher mbs = new ManagementObjectSearcher("Select * From Win32_processor"); 
ManagementObject dsk = new ManagementObject(@"win32_logicaldisk.deviceid=""c:"""); 

我的應用程序是臺式機,客戶機 - 服務器的硬件信息(應用程序和數據庫安裝在服務器)。 此方法爲客戶端獲取信息。有沒有辦法獲得局域網上某些節點的硬件信息 - 我想獲取服務器的硬件信息?

+0

看看這個[文章] [1] [1]:http://stackoverflow.com/questions/3289471/remote-wmi-onnection 有你可能得到你的回答 – Tomtom

回答

0

這是一個子程序我爲了查詢遠程主機使用(在這裏,我想我已經在遠程計算機上配置WMI):

public string getWMI(string[] parameters) 
    { 
     string ip = parameters[0]; 
     string username = parameters[1]; 
     string password = parameters[2]; 
     string query = parameters[3]; 
     string result = ""; 
     ConnectionOptions options = new ConnectionOptions(); 
     ManagementScope scope; 
     options.Username = username; 
     options.Password = password; 
     try 
     { 
      scope = new ManagementScope("\\\\" + ip + "\\root\\cimv2", options); 
      scope.Connect(); 
      if (scope.IsConnected) 
      { 
       ObjectQuery q = new ObjectQuery(query); 
       ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, q); 
       ManagementObjectCollection objCol = searcher.Get(); 
       foreach (ManagementObject mgtObject in objCol) 
       { 
        result = result + mgtObject.GetText(TextFormat.CimDtd20); 
       } 
      } 
      else 
      { 
      } 
     } 
     catch (Exception e) 
     { 
      writeLogFile("WMI Error: " + e.Message); 
      writeLog("WMI Error: " + e.Message); 
     } 
     return result; 
    } 

那個子程序中我使用了一個直接的查詢,如「SELECT *來自Win32_ComputerSystem「,但您也可以使用ManagementClass

0

我想獲取服務器的硬件信息?

  • 該暴露的eServer WMI
  • 的fireawall不會阻止它:

WMI可以,只要POIN到另一臺服務器。

  • 您的用戶帳戶擁有其他服務器上的權限。
  • 這樣簡單。