您的位置:首页 > 编程语言 > C语言/C++

VC++如何判断当前操作系统是32位还是64位?

2013-08-31 19:03 549 查看
方法如下:
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: