考慮所有基於Windows的計算機的域。從這些計算機我想只檢測Windows Server 2003計算機。如何僅檢測來自域的Windows 2003計算機
我擁有域中所有機器的所有機器名稱。那麼如何從機器名稱中確定OS版本。我用Environment.OSVersion
來獲得本地計算機的操作系統版本。如果我知道遠程計算機名稱,我如何獲得遠程計算機的操作系統版本?
考慮所有基於Windows的計算機的域。從這些計算機我想只檢測Windows Server 2003計算機。如何僅檢測來自域的Windows 2003計算機
我擁有域中所有機器的所有機器名稱。那麼如何從機器名稱中確定OS版本。我用Environment.OSVersion
來獲得本地計算機的操作系統版本。如果我知道遠程計算機名稱,我如何獲得遠程計算機的操作系統版本?
可以使用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頁面。
除了我已經提供了答案的事實之外,爲什麼這次投票結束(「脫離主題」)呢?這聽起來像是一個合理的問題。 – 2012-03-07 13:23:23