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