如何从域中仅检测Windows 2003计算机

时间:2012-03-07 12:50:16

标签: c# .net windows

考虑所有基于Windows的计算机的域。从这些计算机我想只检测Windows Server 2003计算机。

我拥有域中所有计算机的所有计算机名称。那么如何从机器名称确定OS版本。我使用Environment.OSVersion来获取本地计算机的os版本。如果我知道远程计算机名称,如何获得远程计算机的操作系统版本?

1 个答案:

答案 0 :(得分: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页面。