如何判断我是使用.NET在x64还是x86上?

时间:2008-09-18 08:07:52

标签: .net x86 64-bit

我想根据用户运行的平台向我的用户提供正确的程序升级版本链接,因此我需要知道我目前是在x86操作系统还是x64操作系统上运行。

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

5 个答案:

答案 0 :(得分:5)

在.NET 4中引入了

Environment.Is64BitOperatingSystem Environment.Is64BitProcess。对于.NET 2,您需要尝试其他一些答案。

答案 1 :(得分:4)

调用IsWow64Process以确定您的32位进程是否在64位操作系统上的WOW64中运行。您可以致电GetNativeSystemInfo查看确切内容:wProcessorArchitecture member SYSTEM_INFOPROCESSOR_ARCHITECTURE_INTEL为32位,PROCESSOR_ARCHITECTURE_AMD64为x64和{{} 1}}用于英特尔的Itanium。

答案 2 :(得分:0)

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

编辑:在再次阅读问题后,我不确定这是您正在寻找的内容。

答案 3 :(得分:0)

你可以通过C# - How to get Program Files (x86) on Windows 64 bit中使用的环境变量来确定很多[并且这恰好比迈克的答案更适合我,因为我碰巧有兴趣找到程序文件目录名称,所以我得到了+1)

答案 4 :(得分:-2)

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

from here