C# 如何以编程方式区分XP 64位和Server 2003 64位之间的差异
我有一个程序,需要根据用户运行的windows版本显示不同下载的不同链接 使用我能够检测出操作系统的版本。此外,使用我可以检测我是在32位还是64位版本的操作系统上运行 这将完全符合我的需要,但是我遇到了这样的情况,即C# 如何以编程方式区分XP 64位和Server 2003 64位之间的差异,c#,.net,windows,.net-2.0,C#,.net,Windows,.net 2.0,我有一个程序,需要根据用户运行的windows版本显示不同下载的不同链接 使用我能够检测出操作系统的版本。此外,使用我可以检测我是在32位还是64位版本的操作系统上运行 这将完全符合我的需要,但是我遇到了这样的情况,即Windows XP 64位版本和Windows Server 2003都使用版本号5.2 如何检测这两个操作系统之间的差异 作为旁注,如果它们在2003 64位或XP 64位上,我确实需要将它们发送到不同的位置,以下是我需要将人们发送到的链接: 假设您在.Net中编程
Windows XP 64位版本
和Windows Server 2003
都使用版本号5.2
如何检测这两个操作系统之间的差异
作为旁注,如果它们在2003 64位或XP 64位上,我确实需要将它们发送到不同的位置,以下是我需要将人们发送到的链接:
- IS64位操作系统
- IS64位进程
- 渗透压
- 处理器计数
- 等等
wProductType
设置为VER\u NT\u服务器
,而Windows XP/7/8的VER\u NT\u工作站
您已经知道如何获取操作系统是32位还是64位,因此通过一点p/Invoke(GetVersionEx是),您应该能够了解其余部分
或者,如果不想使用p/Invoke,可以使用WMI,并查看
Win32\u OperatingSystem
类,该类在ProductType
属性中具有相同的信息。除非你真的必须这样做,否则我不会这么做。请重新阅读我的问题。两个操作系统的报告相同。这就是我的问题所在!另外,IS64位操作系统是.net 4.0或更高版本的功能。我的问题被标记为.net 2.0您有很多选项,包括Win32 GetVersionEx()或.net“Environment”属性。关键是没有一个神奇的价值:你需要结合使用,比如说,“版本”和“平台”。或GetVersionEx()和GetCurrentHwProfile()的组合。等。好的,然后显示需要哪种组合来区分两个系统之间的差异,我将删除我的-1,直到那时你的答案“不有用”(向下投票的alt文本)我的链接应该指向“Environment”类,而不是“Environment.Version”。对不起,我不清楚。区别的一种方法是“Environment.OSVersion”。另一个是查看GetVersionEx()中返回的不同OSVERSIONINFO字段。PS:这里有一个很好的链接,用于在C#/.Net 2.0中检测64位操作系统:这将为您提供字符串名称:UseOSInfo.Edition
compare@Greg您能否提供指向OSInfo的MSDN链接?OSInfo没有Edition
属性。对于两位投了反对票的人来说,为什么你觉得我的问题“没有显示研究成果、不清楚或无用”?我已经对figure 64 bitness(无法访问IS64 BitOperatingSystem)进行了PInvoking,所以我会将其包括在这里。我会测试它,如果它有效,我会接受它。