gpt4 book ai didi

c++ - 如何在 C++ 上检测 Windows 是 32 位还是 64 位?

转载 作者:可可西里 更新时间:2023-11-01 13:28:09 29 4
gpt4 key购买 nike

如何在 C++ 上检测 windows 是 32 位还是 64 位?我在 .Net 中看到很多示例,但我需要 C++。 IsWow64Process() 也对我不起作用,因为“如果进程在 32 位 Windows 下运行,则该值设置为 FALSE。如果进程是在 64 位 Windows 下运行的 64 位应用程序,则该值为也设置为 FALSE"

如果我在 32 位操作系统下有 32 位程序,我有 FALSE如果我在 64 位操作系统下有 64 位进程,我有 FALSE

但我不关心进程位我需要操作系统位

最佳答案

检测底层系统信息的 Win32 API 函数是 GetNativeSystemInfo .调用函数并读取 SYSTEM_INFOwProcessorArchitecture 成员函数填充的结构。

虽然实际上可以使用 IsWow64Process 来检测这一点。如果您调用 IsWow64Process 并返回 TRUE,那么您就知道您正在 64 位系统上运行。否则,返回 FALSE。然后你只需要测试一个指针的大小,例如。 32位指针表示32位系统,64位指针表示64位系统。事实上,您可能可以从编译器提供的条件中获取信息,具体取决于您使用的编译器,因为指针的大小在编译时是已知的。

Raymond Chen 在 blog article 中描述了这种方法.他很有帮助地包含了我在此处复制的代码:

BOOL Is64BitWindows()
{
#if defined(_WIN64)
return TRUE; // 64-bit programs run only on Win64
#elif defined(_WIN32)
// 32-bit programs run on both 32-bit and 64-bit Windows
// so must sniff
BOOL f64 = FALSE;
return IsWow64Process(GetCurrentProcess(), &f64) && f64;
#else
return FALSE; // Win64 does not support Win16
#endif
}

关于c++ - 如何在 C++ 上检测 Windows 是 32 位还是 64 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23696749/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com