方法如下:

    #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