//判断操作系统是64位还是32位
//返回TRUE位64位,返回FALSE位32位
///
方法一:
BOOL IsWow64()
{
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;
BOOL bIsWow64 = FALSE;
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle("kernel32"),"IsWow64Process");
if (NULL != fnIsWow64Process)
{
fnIsWow64Process(GetCurrentProcess(),&bIsWow64);
}
return bIsWow64;
}
方法二:
BOOL GetOSVerIs64Bit()
{
BOOL bRet=FALSE;
SYSTEM_INFO si;
typedef VOID(__stdcall*GETNATIVESYSTEMINFO)(LPSYSTEM_INFO lpSystemInfo);
GETNATIVESYSTEMINFO fnGetNativeSystemInfo;
fnGetNativeSystemInfo=(GETNATIVESYSTEMINFO)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),"GetNativeSystemInfo");
if (fnGetNativeSystemInfo!=NULL)
{
fnGetNativeSystemInfo(&si);
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64 )
{
bRet=TRUE;
}
}
return bRet;
}
//
//判断进程是64位还是32位
//返回1为64位,返回0为32位
int GetProcessIsWOW64(HANDLE hProcess)
{
int nRet=-1;
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS fnIsWow64Process;
BOOL bIsWow64 = FALSE;
BOOL bRet;
DWORD nError;
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress( GetModuleHandle(L"kernel32"),"IsWow64Process");
if (NULL != fnIsWow64Process)
{
bRet=fnIsWow64Process(hProcess,&bIsWow64);
if (bRet==0)
{
nError=GetLastError();
nRet=-2;
}
else
{
if (bIsWow64)
{
nRet=1;
}
else
{
nRet=0;
}
}
}
return nRet;
}