您的位置:首页 > 编程语言 > C语言/C++

VC++如何判断当前操作系统是32位还是64位?

2015-12-24 15:31 597 查看
方法如下:

[cpp] view
plaincopy

#include <windows.h>    

#include <tchar.h>    

    

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

    

LPFN_ISWOW64PROCESS fnIsWow64Process;    

    

BOOL IsWow64()    

{    

    BOOL bIsWow64 = FALSE;    

    

    //IsWow64Process is not available on all supported versions of Windows.    

    //Use GetModuleHandle to get a handle to the DLL that contains the function    

    //and GetProcAddress to get a pointer to the function if available.    

    

    fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(    

        GetModuleHandle(TEXT("kernel32")),"IsWow64Process");    

    

    if(NULL != fnIsWow64Process)    

    {    

        if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))    

        {    

            //handle error    

        }    

    }    

    return bIsWow64;    

}    

    

int main( void )    

{    

    if(IsWow64())    

        _tprintf(TEXT("The process is running under WOW64.\n"));    

    else    

        _tprintf(TEXT("The process is not running under WOW64.\n"));    

    

    return 0;    

}    

注意,是判断当前操作系统,不是判断CPU

不能通过 #ifdef _WIN64 来判断,因为如果开发环境中定义了该宏,则该判断永远为真

参考:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms684139%28v=vs.85%29.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: