如何使用 .NET 判断我是在 x64 还是 x86 上?
题
我想根据用户运行的平台向他们提供指向我的程序升级版本的正确链接,因此我需要知道我当前是在 x86 操作系统还是 x64 操作系统上运行。
我发现最好的是使用 Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE")
, ,但我认为会有一些内置的设施来实现这一点?
解决方案
环境.Is64BitOperatingSystem 和 环境.Is64BitProcess 正在 .NET 4 中引入。对于 .NET 2,您需要尝试一些其他答案。
其他提示
称呼 IsWow64Process
查明您的 32 位进程是否在 64 位操作系统上的 WOW64 中运行。您可以致电 GetNativeSystemInfo
找出它到底是什么:这 wProcessorArchitecture member
的 SYSTEM_INFO
将 PROCESSOR_ARCHITECTURE_INTEL
对于 32 位, PROCESSOR_ARCHITECTURE_AMD64
对于 x64 和 PROCESSOR_ARCHITECTURE_IA64
对于英特尔的安腾。
使用 Marshal.SizeOf 检查 IntPtr 的大小。32 位 = 4 字节,64 位 = 8 字节。
编辑:我不确定这是否是您再次阅读问题后所寻找的。
您可以通过环境变量来确定很多内容,如 C# - 如何在 Windows 64 位上获取程序文件 (x86) [这恰好比迈克的答案更适合我,我+1,因为我碰巧对查找程序文件目录名称感兴趣]
仅检查 IntPtr.Size
。您需要将目标平台设置为 AnyCPU。
不隶属于 StackOverflow