日期:2014-05-17  浏览次数:21151 次

怎么用VC 判断操作系统
各位大虾
请问怎么用VC 判断操作系统是Winxp,Vista还是Win7
还有怎么用VC 判断系统是Win32 还是Win 64

------解决方案--------------------
在网上搜一下windows API 函数中关于返回系统版本号的方法。
------解决方案--------------------
试试用这个函数:
DWORD GetEnvironmentVariable(
LPCTSTR lpName, // address of environment variable name
LPTSTR lpBuffer, // address of buffer for variable value
DWORD nSize // size of buffer, in characters
);
可以得到环境变量。你可以用这个函数得到名字为"OS"的环境变量,然后就可以判断是什么系统了。这是一个办法,你可以试试。我做文件加密软件,就是用这个函数来得到temp的值的。
------解决方案--------------------
查了一下,这个函数:
BOOL GetVersionEx(
LPOSVERSIONINFO lpVersionInformation // pointer to version 
// information structure
);
可以得到。具体用法你再百度或MSDN一下吧。
------解决方案--------------------
http://support.microsoft.com/kb/307393
http://support.microsoft.com/kb/188987
------解决方案--------------------
BOOL WINAPI GetVersionEx(
__in_out LPOSVERSIONINFO lpVersionInfo
);


------解决方案--------------------
[code=C/C++][/code]
#include <windows.h>
#include <stdio.h>

void main()
{
OSVERSIONINFO osvi;
BOOL bIsWindowsXPorLater;

ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

GetVersionEx(&osvi);

bIsWindowsXPorLater = 
( (osvi.dwMajorVersion > 5) ||
( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) ));

if(bIsWindowsXPorLater)
printf("The system meets the requirements.\n");
else printf("The system does not meet the requirements.\n");
}

------解决方案--------------------
OSVERSIONINFO Version;
ZeroMemory(&Version,sizeof(OSVERSIONINFO));
Version.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&Version);
if (Version.dwPlatformId==VER_PLATFORM_WIN32_NT) 
{
if((Version.dwMajorVersion==5)&&(Version.dwMinorVersion==0))
{
return WIN2K;
}else if((Version.dwMajorVersion==5)&&(Version.dwMinorVersion>0))
{
return WINXP;
}else if((Version.dwMajorVersion==6)&&(Version.dwMinorVersion==0))
return VISTA;
else if((Version.dwMajorVersion>=6))
return WIN7;
}
else if(Version.dwPlatformId==VER_PLATFORM_WIN32_WINDOWS)
{
if ((Version.dwMajorVersion == 4) && (Version.dwMinorVersion < 90) )
{
return WIN98;
}
if ((Version.dwMajorVersion == 4) && (Version.dwMinorVersion >= 90) )
{
return WINME;
}
}
------解决方案--------------------
判断32 or 64
http://www.wangluo8.com/html/diannao/dnzs/2009/0328/336.html
------解决方案--------------------
64位Wnidows 里面有个叫Wow64 的模拟器技术,可以使32位的程序在64位Windows 上运行。 当你想在程序里面针对32b位/ 64位系统执行不同代码的时候, 需要判断操作系统是32位还是64位。 使用 Windows API函数 GetNativeSystemInfo 可以获得这个信息。

 

代码示例:

 

SYSTEM_INFO si;
GetNativeSystemInfo(&si);

if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||

si.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_IA64 )

{

//64 位操作系统

}

else

{

// 32 位操作系统