我如何以编程方式了解我的操作系统是Longhorn服务器还是Vista(客户端)。
两者的主要版本和次要版本似乎相同:
http://msdn.microsoft.com/en-us/library/ms724833.aspx
那么,还有更好的选择吗?
答案 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