如何通过编程来区分XP 64位和Server 2003 64位

本文关键字:64位 Server 2003 XP 何通过 编程 | 更新日期: 2023-09-27 18:04:50

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

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

这将完全满足我的需求,然而,我偶然发现这一页指出Windows XP 64-Bit EditionWindows Server 2003都使用版本号5.2

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


作为旁注,如果他们是2003 64位或XP 64位,我确实需要将他们发送到不同的位置,以下是我需要发送的链接:

  • Windows XP远程桌面连接(终端服务客户端6.1)
  • 远程桌面连接(Terminal Services Client 6.0) for Windows XP x64 Edition
  • Windows Server 2003远程桌面连接(终端服务客户端6.0)
  • 远程桌面连接(Terminal Services Client 6.0) for Windows Server 2003 x64 Edition

如何通过编程来区分XP 64位和Server 2003 64位

GetVersionExwProductType设置为VER_NT_SERVER对于Windows Server 2003/2008/2008R2/2012,而VER_NT_WORKSTATION对于Windows XP/7/8。

你已经知道如何获得操作系统是32位还是64位,所以用一点p/Invoke (GetVersionEx在这里),你应该能够弄清楚剩下的。

或者,如果您不想使用p/Invoke,您可以使用WMI,并查看Win32_OperatingSystem类,它在ProductType属性中具有相同的信息。我不会这么做的,除非你真的需要

假设你在。net中编程:

  • http://msdn.microsoft.com/en-us/library/b3022k9x.aspx

系统。环境属性包括:

  • Is64BitOperatingSystem

  • Is64BitProcess

  • OSVersion

  • ProcessorCount

  • 等等