1,涉及API
GetVersionEx函数原型:
- BOOL GetVersionEx(POSVERSIONINFO pVersionInformation);
结构OSVERSIONINFOEX定义如下:
typedef struct {
DWORD dwOSVersionInfoSize; //在使用GetVersionEx之前要将此初始化为结构的大小
DWORD dwMajorVersion; //系统主版本号
DWORD dwMinorVersion; //系统次版本号
DWORD dwBuildNumber; //系统构建号
DWORD dwPlatformId; //系统支持的平台
TCHAR szCSDVersion[128]; //系统补丁包的名称
WORD wServicePackMajor; //系统补丁包的主版本
WORD wServicePackMinor; //系统补丁包的次版本
WORD wSuiteMask; //标识系统上的程序组
BYTE wProductType; //标识系统类型
BYTE wReserved; //保留,未使用
} OSVERSIONINFOEX, *POSVERSIONINFOEX;
在调用函数之前先初始化结构的大小并调用函数,返回true表示成功:
- OSVERSIONINFOEX os;
- os.dwOSVersionInfoSize=sizeof(os);
- if(!GetVersionEx((OSVERSIONINFO *)&os))
- {
- return FALSE;
- }
函数调用成功以后就可以通过OSVERSIONINFOEX来查看系统的版本信息了。
操作系统
|
版本号
|
Windows 7
|
6.1
|
Windows Server 2008 R2
|
6.1
|
Windows Server 2008
|
6.0
|
Windows Vista
|
6.0
|
Windows Server 2003 R2
|
5.2
|
Windows Server 2003
|
5.2
|
Windows XP
|
5.1
|
Windows 2000
|
5.0
|
2,使用
判断系统版本的代码示例:
OSVERSIONINFOEX os;
os.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
if(GetVersionEx((OSVERSIONINFO *)&os))
{
switch(os.dwMajorVersion)
{
case 5:
switch(os.dwMinorVersion)
{
case 0: //Windows 2000
break;
case 1: //Windows XP
break;
case 2: //Windows Server 2003
break;
}
case 6:
switch(os.dwMinorVersion)
{
case 0:
if(os.wProductType==VER_NT_WORKSTATION) //Microsoft Windows Vista
{
}
else //Microsoft Windows Server 2008
{
}
break;
case 1:
if(os.wProductType==VER_NT_WORKSTATION) //Microsoft Windows 7
{
}
else //Microsoft Windows Server 2008 R2
{
}
break;
case 2: //Microsoft Windows 7
break;
}
break;
default: //其他版本
break;
}
}
操作系统的补丁包版本可以从wServicePackMajor,wServicePackMinor获取。