您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> C/C++ >> -----------------------------判断windows操作系统是32位还是64位-----------------------------

-----------------------------判断windows操作系统是32位还是64位-----------------------------

来源:网络整理     时间:2016/8/31 13:24:40     关键词:

关于网友提出的“ -----------------------------判断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

相关图片

相关文章