1,涉及API
GetVersionEx函数原型:
- BOOL GetVersionEx(POSVERSIONINFO pVersionInformation);
结构OSVERSIONINFOEX定义如下:
- typedef struct {
- DWORD dwOSVersionInfoSize;
- 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:
- break;
- case 1:
- break;
- case 2:
- break;
- }
- case 6:
- switch(os.dwMinorVersion)
- {
- case 0:
- if(os.wProductType==VER_NT_WORKSTATION)
- {
- }
- else
- {
- }
- break;
- case 1:
- if(os.wProductType==VER_NT_WORKSTATION)
- {
- }
- else
- {
- }
- break;
- case 2:
- break;
- }
- break;
- default:
- break;
- }
- }
操作系统的补丁包版本可以从wServicePackMajor,wServicePackMinor获取。