区分Windows版本的最简单方法是什么?

时间:2010-03-03 10:05:49

标签: c# windows

我如何以编程方式了解我的操作系统是Longhorn服务器还是Vista(客户端)。

两者的主要版本和次要版本似乎相同:
http://msdn.microsoft.com/en-us/library/ms724833.aspx

那么,还有更好的选择吗?

3 个答案:

答案 0 :(得分:4)

你链接的那个页面不能给你答案吗?

Windows Server 2008  OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista        OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION 

只需检查wProductType成员对VER_NT_WORKSTATION

修改

看起来没有办法在没有P / Invoke的情况下获得此功能。 System.Environment.OSVersion没有公开这一详细程度,虽然internal static class Win32Native中的Microsoft.Win32命名空间中有mscorlib,但据我所知,从反汇编中可以看出,没有任何内容使用,更不用说公开wProductType

我找到了(但未尝试过)this page on pinvoke.net

答案 1 :(得分:1)

对于服务器,

OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION

适用于工作站

OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION

答案 2 :(得分:1)

您可以使用WMI查找Windows版本以及各种其他系统信息。

以下是获取版本字符串的方法:

var osDetails = new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_OperatingSystem").Get().OfType<System.Management.ManagementObject>().First();
string version = osDetails.GetPropertyValue("Caption") as string;

这将返回一个字符串,其内容类似于:“Microsoft Windows XP Professional”。

除了Caption之外,还有更多属性可用于检索版本号,版本,架构等。:

http://msdn.microsoft.com/en-us/library/aa394239(v=VS.85).aspx