2010-03-03 64 views

回答

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没有公开这个级别的细节,尽管在mscorlibMicrosoft.Win32名称空间中有internal static class Win32Native,但据反汇编我可以看出,没有什么东西可以使用,更不用说公开了,wProductType

我找到了(但没有试过)this page on pinvoke.net

+0

似乎需要一个pinvoke。有没有解决这个问题的解决方案? – satya 2010-03-03 10:40:30

+0

谢谢AakashM。即使我没有找到没有P/Invoke的人。无论如何,感谢您的帮助 – satya 2010-03-03 17:18:52

+0

它可以完成而无需通过WMI。请参阅下面的答案。 – 2011-08-26 09:14:44

1

对于服务器,

OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION 

工作站

OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION 
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; 

这将返回一个字符串,上面写着这样的:“微软Windows XP专业版”。

有更多的属性从标题那里除了可以用来检索版本号,版本,结构等:

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

相关问题