关于网友提出的“ -----------------------------判断windows操作系统是32位还是64位-----------------------------”问题疑问,本网通过在网上对“ -----------------------------判断windows操作系统是32位还是64位-----------------------------”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: -----------------------------判断windows操作系统是32位还是64位-----------------------------
描述: 网上找的都不行
我在win7 64位上面能判断出结果是64位的
但是在windows server 2003 上面的判断系统的结果也是64位的 这个系统cpu是64位的
系统实际是32位的
程序编译成32位的
//第一种方法
SYSTEM_INFO si;
GetNativeSystemInfo(&si);//这个应该判断cpu架构的 不是操作系统的
if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
si.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_IA64 )
is64 = false;
//第二种方法也不行
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)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
return FALSE;
else
return TRUE;
}
return bIsWow64;
}
//第三种方法
SYSTEM_INFO siSysInfo;
// Copy the hardware information to the SYSTEM_INFO structure.
GetSystemInfo(&siSysInfo);
printf("Hardware information: \n");
printf(" OEM ID: %u\n", siSysInfo.dwOemId);
printf(" Number of processors: %u\n", siSysInfo.dwNumberOfProcessors);
printf(" Page size: %u\n", siSysInfo.dwPageSize);
printf(" Processor type: %u\n", siSysInfo.dwProcessorType);
printf(" Minimum application address: %lx\n", siSysInfo.lpMinimumApplicationAddress);
printf(" Maximum application address: %lx\n", siSysInfo.lpMaximumApplicationAddress);
printf(" Active processor mask: %u\n", siSysInfo.dwActiveProcessorMask);
结果如下:
Hardware information:
OEM ID: 0
Number of processors: 1
Page size: 4096
Processor type: 586
Minimum application address: 10000
Maximum application address: 7ffeffff
Active processor mask: 1
解决方案1: Solution 1. Use the IsWow64Process function
Solution 2. Query the Win32_Processor WMI class's AddressWidth property
http://code.msdn.microsoft.com/windowsdesktop/CppCheckOSBitness-a16c69e4
解决方案2: http://stackoverflow.com/questions/1647930/is-it-possible-to-check-whether-you-are-building-for-64-bit-with-microsoft-c-com
http://www.viva64.com/en/k/0040/
以上介绍了“ -----------------------------判断windows操作系统是32位还是64位-----------------------------”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3681705.html