如何判断当前进程是在32位/64位系统上运行

#include
#include


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;
}


BOOL IsX64OS()
{
#ifdef _WIN64
return TRUE;
#else
static BOOL s_b = IsWow64();
return s_b;
#endif
}


int main( void )
{
    if(IsX64OS())
        _tprintf(TEXT("The process is running under 64.\n"));
    else
        _tprintf(TEXT("The process is not running under 32 .\n"));


    return 0;
}

你可能感兴趣的:(windows,API,技术,3264)