C/C++ 判断windows操作系统是x86/x64

最后更新于:2020-08-06 22:58:19

一.exe可执行程序为什么要区分32/64

64位可执行程序应用程序只能在64位的操作系统运行,而32可执行程序应用程序既能在64位的操作系统运行,也能在32位的操作系统运行,因为微软的向下兼容性做的很到位!

64位操作系统简称x64,32位操作系统简称x86;

二.C/C++如何判断windows操作系统是32位的还是64位

/************************************************************************/
/*@文件名      : C/C++如何判断windows操作系统是32位的还是64位.cpp
/*@日  期      : 2020/07/23 21:52
/*@作  者      : 猿说编程
/*@公众号      : 猿说编程
/*@博客        : www.shuopython.com
/*@描述        : C语言教程 - C/C++如何判断windows操作系统是32位的还是64位
/************************************************************************/

#include "windows.h"

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS fnIsWow64Process = NULL;

BOOL Isx64Application() {
    return (sizeof(LPFN_ISWOW64PROCESS) == 8)? TRUE: FALSE;
}

BOOL IsWow64() {

    BOOL bIsWow64 = FALSE;

    if (!fnIsWow64Process)
        fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(GetModuleHandle(TEXT("kernel32")),"IsWow64Process");

    if(fnIsWow64Process)
        if (!fnIsWow64Process(GetCurrentProcess(), &bIsWow64))
            return FALSE;

    return bIsWow64;
}

int main( void ) {

    //64位应用程序只能在64位操作系统中运行
    if (Isx64Application())
        _tprintf(TEXT("The application is a x64 program.\n"));
    else {
        if (!IsWow64()) //32位操作系统中编译的32位应用程序
            _tprintf(TEXT("The application is running under Windows x86.\n"));
        else  //64位操作系统中编译的32位应用程序
            _tprintf(TEXT("The application is a x86 program running under Windows x64.\n"));
    }

    return 0;
}

输出结果:(正确的结果)

The application is a x86 program running under Windows x64.


猜你喜欢

1. 三目运算符

2. NaN(Not a Number)

3. INF:infinite

4. 判断exe可执行程序是32位的还是64位

5. unicode和多字节区别




转载请注明: 猿说编程 » C/C++教程 » 判断windows操作系统是x86/x64



技术交流、商务合作请直接联系博主
扫码或搜索:猿说编程

python/C++教程

猿说编程
微信公众号 扫一扫关注

赞赏

微信赞赏支付宝赞赏