19 Jun 2012

c++判断操作系统版本

有时程序运行在不同的操作系统下需要执行不同的操作,c++获取操作系统版本号,可以完成这个操作.

下面的函数判断系统是否是vista之后,返回true/false


如果需要改为判断xp或者win7前后的系统,只需要修改dwMajorVersion即可,具体不同系统对应的版本信息可以查阅微软官方文档,在这里.


bool IsVistaOrLater()
{
 OSVERSIONINFOEX osvi;
 DWORDLONG dwlConditionMask = 0;
 int op=VER_GREATER_EQUAL;

 // Initialize the OSVERSIONINFOEX structure.

 ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
 osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
 osvi.dwMajorVersion = 6; // 这是vista的最低版本号6.0
 osvi.dwMinorVersion = 0;
 osvi.wServicePackMajor = 0; // 这是sp版本号0.0
 osvi.wServicePackMinor = 0;

 // Initialize the condition mask.
 VER_SET_CONDITION( dwlConditionMask, VER_MAJORVERSION, op );
 VER_SET_CONDITION( dwlConditionMask, VER_MINORVERSION, op );
 VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMAJOR, op );
 VER_SET_CONDITION( dwlConditionMask, VER_SERVICEPACKMINOR, op );

 // Perform the test.
 return VerifyVersionInfo(
  &osvi, 
  VER_MAJORVERSION | VER_MINORVERSION | 
  VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR,
  dwlConditionMask);
}
头文件:
#include <windows.h>
#include <stdio.h>

No comments :

Post a Comment