代码之家  ›  专栏  ›  技术社区  ›  Howard Pinsley

是否有Windows API调用可以告诉我是否在64位操作系统上运行?

  •  2
  • Howard Pinsley  · 技术社区  · 15 年前

    是否有Windows API调用可以告诉我是否在64位操作系统上运行?我有一些传统的C++代码,它调用GetVersionEx来填充一个OsVielnFipe信息结构,但它只告诉我(OS)OS(Vista、V7等),而不是处理体系结构。我可以通过简单地寻找“c:\program files(x86)…”的存在来绕过这个问题,但这看起来很难看。我相信一定有一个API来返回这个信息。

    4 回复  |  直到 9 年前
        1
  •  6
  •   Michael    15 年前

    IsWow64Process 可能是你想要的。

        2
  •  3
  •   Jerry Coffin    15 年前

    GetNativeSystemInfo()

        3
  •  1
  •   Community CDub    8 年前

    我发现这篇文章似乎提供了一个很好的答案: Detect whether current Windows version is 32 bit or 64 bit

    我不知道为什么我在发布前搜索堆栈溢出时它没有出现。

    顺便说一下,对我来说最好的解决方案就是简单地检查programw6432环境变量。

        4
  •  0
  •   Community CDub    8 年前

    解决方案是非常直接的。如果您正在64位编译,那么您已经知道您正在64位版本的Windows上运行。所以你只需要打电话 IsWow64Process 为32位编译时。以下实现返回 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
    }
    

    这回答了你问的问题。你应该问的问题的答案被贴在 response by Jerry Coffin 已经:只需打电话 GetNativeSystemInfo .