如何以编程方式知道我的操作系统是Longhorn服务器还是Vista(客户端)。
看起来两者的主版本和次版本都相同:
http://msdn.microsoft.com/en-us/library/ms724833.aspx
那么,有更好的替代方案吗?
如何以编程方式知道我的操作系统是Longhorn服务器还是Vista(客户端)。
看起来两者的主版本和次版本都相同:
http://msdn.microsoft.com/en-us/library/ms724833.aspx
那么,有更好的替代方案吗?
Windows Server 2008 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
只需将wProductType
成员与VER_NT_WORKSTATION
进行比较。
编辑
看起来没有办法在不使用P/Invoke的情况下获取此信息。 System.Environment.OSVersion
没有公开此级别的详细信息,尽管在mscorlib
中的Microsoft.Win32
命名空间中有一个internal static class Win32Native
,但从反汇编中我可以看出,没有任何东西使用或公开wProductType
。
我找到了(但尚未尝试)这个pinvoke.net页面。
对于服务器,
OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
适用于工作站
OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
您可以使用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”的字符串。
除了标题之外,还有更多的属性可用于检索版本号、版本、架构等:
http://msdn.microsoft.com/en-us/library/aa394239(v=VS.85).aspx