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

来源:互联网 发布:mac 所有软件打不开 编辑:程序博客网 时间:2024/04/29 05:21

方法如下:

#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