有没有一个Windows API调用可以告诉我是否在64位操作系统上运行?我有一些遗留的C++代码,它调用GetVersionEx来填充OSVERSIONINFO结构,但这只告诉我(据我所知)操作系统(Vista、V7等),而不是处理架构。我可以通过查找“C:\Program Files (x86)...”文件夹的存在来解决这个问题,但这似乎很丑陋。我相信一定有一个API可以返回这个信息。
IsWow64Process
可能是您正在寻找的内容。
_M_X64
。 - MichaelGetNativeSystemInfo()
我找到了这篇文章,它似乎提供了一个很好的答案:检测当前 Windows 版本是 32 位还是 64 位
我不知道为什么在发布之前搜索 Stack Overflow 时它没有出现。
顺便说一下,对我来说最好的解决方案是简单地检查 ProgramW6432 环境变量。
解决方案非常简单。如果您正在为64位编译,那么您已经知道您正在运行64位版本的Windows。所以只需要在32位编译时调用IsWow64Process。下面的实现将返回true
,如果它正在运行在64位版本的Windows上:
bool Is64BitPlatform() {
#if defined(_WIN64)
return true; // 64-bit code implies a 64-bit OS
#elif defined(_WIN32)
// 32-bit code runs on a 64-bit OS, if IsWow64Process returns TRUE
BOOL f = FALSE;
return ::IsWow64Process(GetCurrentProcess(), &f) && f;
#else
#error Unexpected platform.
#endif
}
这是你所问问题的答案。然而,你应该问的问题的答案已经在Jerry Coffin的回复中发布了:只需调用GetNativeSystemInfo即可。