typedef BOOL WINAPI FN_ISWOW64_PROC(HANDLE hProcess, PBOOL Wow64Process); BOOL Is64bitWindows(void); BOOL Is64bitWindows(void) { BOOL bRet = FALSE; #ifdef _WIN64 bRet = FALSE; goto Exit0; #else OSVERSIONINFOEX osex; osex.dwOSVersionInfoSize = sizeof(osex); BOOL bRetVal = ::GetVersionEx((LPOSVERSIONINFO)&osex); if (bRetVal && (VER_PLATFORM_WIN32_NT == osex.dwPlatformId) && (osex.dwMajorVersion > 5) || (osex.dwMajorVersion == 5 && osex.dwMinorVersion >= 1)) { FN_ISWOW64_PROC* pfnIsWow64Process = NULL; BOOL bWow64 = FALSE; pfnIsWow64Process = (FN_ISWOW64_PROC*)::GetProcAddress(::GetModuleHandle(_T("kernel32.dll")), "IsWow64Process"); bRet = pfnIsWow64Process ? pfnIsWow64Process(::GetCurrentProcess(), &bWow64) : FALSE; bRet = bRet && bWow64; } #endif Exit0: return bRet; }