方法如下:
#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 来判断,因为如果开发环境中定义了该宏,则该判断永远为真
参考: