如何在 C++ 上检测是 windows 32 还是 64 位?我在 .Net 中看到了很多示例,但我需要 C++。 IsWow64Process() 也对我不起作用,因为“如果进程在 32 位 Windows 下运行,则值设置为 FALSE。如果进程是在 64 位 Windows 下运行的 64 位应用程序,则值为也设置为 FALSE”
如果我在 32 位操作系统下有 32 位 proc 我有 FALSE 如果我在 64 位操作系统下有 64 位 proc 我有 FALSE
但我不关心进程位我需要操作系统位
原文由 Ted 发布,翻译遵循 CC BY-SA 4.0 许可协议
检测底层系统信息的 Win32 API 函数是
GetNativeSystemInfo
。调用函数并读取函数填充的SYSTEM_INFO
结构的wProcessorArchitecture
成员。虽然实际上可以使用
IsWow64Process
来检测这一点。如果您调用IsWow64Process
并返回TRUE
,那么您知道您在 64 位系统上运行。否则,返回FALSE
。然后你只需要测试一个指针的大小,例如。 32 位指针表示 32 位系统,64 位指针表示 64 位系统。实际上,您可能可以从编译器提供的条件中获取信息,具体取决于您使用的编译器,因为指针的大小在编译时是已知的。Raymond Chen 在一篇 博客文章 中描述了这种方法。他很有帮助地包含了我在这里复制的代码: