2012-03-07 44 views
0

考慮所有基於Windows的計算機的域。從這些計算機我想只檢測Windows Server 2003計算機。如何僅檢測來自域的Windows 2003計算機

我擁有域中所有機器的所有機器名稱。那麼如何從機器名稱中確定OS版本。我用Environment.OSVersion來獲得本地計算機的操作系統版本。如果我知道遠程計算機名稱,我如何獲得遠程計算機的操作系統版本?

+0

除了我已經提供了答案的事實之外,爲什麼這次投票結束(「脫離主題」)呢?這聽起來像是一個合理的問題。 – 2012-03-07 13:23:23

回答

0

可以使用WMI(Windows Management Instrumentation)訪問遠程計算機的 Win32_OperatingSystem類實例。

using (var mc = new ManagementClass(@"\\" + computerName + @"\root\cimv2:Win32_OperatingSystem")) 
{ 
    foreach (var obj in mc.GetInstances()) 
    { 
     if (((bool)obj.Properties["Primary"].Value)) 
     { 
      int productType = (int)obj.Properties["ProductType"].Value; 
      string version = obj.Properties["Version"].Value.ToString(); 
      bool isServer = (productType == 2 || productType == 3); // "Domain Controller" or "Server 

      if (version == "5.2.3790" && isServer) 
      { 
      // "Caption" should contain something like "Microsoft(R) Windows(R) Server 2003..." 
      // Please resist parsing that, however.     
      Console.WriteLine(obj.Properties["Caption"].Value); 
      } 
     } 
    } 
} 

有關屬性和什麼樣的價值觀的細節都可以,請參閱Win32_OperatingSystem類的MSDN頁面。

+0

謝謝。但我不明白是什麼意思:properties [「Primary」]。value – sailer 2012-03-07 13:20:06

+0

是否意味着語法結構或特殊屬性值「Primary」? – 2012-03-07 13:22:38

+0

:屬性值「primary」 – sailer 2012-03-07 13:25:44

相關問題