如何以编程方式告诉XP 64位和Server 2003 64位之间的区别

时间:2013-03-19 21:41:43

标签: c# .net windows .net-2.0

我有一个程序,我需要根据用户运行的Windows版本显示不同的下载链接。

使用this answer我能够检测到操作系统的版本。同样使用this answer我可以检测到我是在32位还是64位版本的操作系统上运行。

这完全符合我的需求,但我遇到了this page,其中指出Windows XP 64-Bit EditionWindows Server 2003都使用版本号5.2

如何检测这两个操作系统之间的差异?


作为旁注,我确实需要将它们发送到不同的位置,如果它们是2003 64位或XP 64位,这里是我需要发送给人们的链接:

2 个答案:

答案 0 :(得分:5)

对于Windows Server 2003/2008 / 2008R2 / 2012,

GetVersionEx会将wProductType设置为VER_NT_SERVER,而对于Windows XP / 7/8则设置为VER_NT_WORKSTATION

你已经知道如何获得操作系统是32位还是64位,所以有一点P / Invoke(GetVersionEx为here),你应该能够弄清楚其余部分。 / p>

或者,如果您不想使用P / Invoke,可以使用WMI,并查看Win32_OperatingSystem类,其中ProductType类具有相同的信息。 {1}}财产。我不会这样做,除非你真的到。

答案 1 :(得分:-1)

假设您正在使用.Net进行编程:

System.Environment属性包括:

  • Is64BitOperatingSystem

  • Is64BitProcess

  • OSVERSION

  • ProcessorCount

  • 等等