2008-09-18 158 views
5

我想根据运行的平台为我的用户提供正确的升级版本的链接,因此我需要知道我目前是在x86操作系统还是在x64操作系统上运行。如何判断我是使用.NET的x64还是x86?

我发现的最好的方法是使用Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE"),但我认为会有一些内置的设施?

+1

你应该接受一个答案或解释你最终做了什么并接受。 – 2009-12-10 14:07:01

回答

0

用Marshal.SizeOf检查IntPtr的大小。 32位= 4字节,64位= 8字节。

编辑:我不确定这是你在再次阅读问题后寻找什么。

+0

这将区分32位和64位平台,但64位平台可能是Itanium而不是x64。 (不太可能,我知道,但可能。) – millenomi 2008-09-18 08:22:15

+0

你不需要使用Marshal.SizeOf,你可以使用IntPtr.Size – Wilka 2008-11-17 15:32:36

+1

-1:这告诉这个.NET进程是否是x64 – 2009-12-10 14:03:50

-2

检查只是IntPtr.Size。您需要将目标平台作为AnyCPU。

from here

4

呼叫IsWow64Process找出如果您的32位过程在WOW64运行64位操作系统上。你可以拨打GetNativeSystemInfo找出它到底是什么:wProcessorArchitecture memberSYSTEM_INFO将为PROCESSOR_ARCHITECTURE_INTEL为32位,PROCESSOR_ARCHITECTURE_AMD64为x64和PROCESSOR_ARCHITECTURE_IA64为英特尔的安腾。

相关问题