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