如何使用.NET判断我是在x64还是x86上?
时间:2020-03-06 14:20:21 来源:igfitidea点击:
我想根据用户所运行的平台为他们的程序提供升级版本的正确链接,因此我需要知道我当前是在x86操作系统还是x64操作系统上运行。
我发现最好的方法是使用Environment.GetEnvironmentVariable(" PROCESSOR_ARCHITECTURE")
,但是我认为会为此内置一些功能吗?
解决方案
使用Marshal.SizeOf检查IntPtr的大小。 32位= 4字节,64位= 8字节。
编辑:我不确定这是我们在再次阅读问题后正在寻找的东西。
只检查IntPtr.Size
。我们需要将目标平台作为AnyCPU。
从这里
调用" IsWow64Process"以了解32位进程是否在64位操作系统上的WOW64中运行。我们可以调用GetNativeSystemInfo来确切了解它的含义:对于32位,SYSTEM_INFO的wProcessorArchitecture成员将为PROCESSOR_ARCHITECTURE_INTEL,对于x64是PROCESSOR_ARCHITECTURE_AMD64,对于英特尔的Itanium是PROCESSOR_ARCHITECTURE_IA64.
我们可以通过Chow如何在Windows 64位上获取程序文件(x86)中使用的环境变量来确定很多问题[这比Mike的答案更适合我,因为我碰巧对找到该程序感兴趣,所以我对其+1了。文件目录名]
.NET 4中引入了Environment.Is64BitOperatingSystem和Environment.Is64BitProcess。对于.NET 2,我们需要尝试其他一些答案。