VC++如何判斷當前作業系統是32位還是64位?
阿新 • • 發佈:2019-02-11
方法如下:
#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