Windows版本标识[C / C ++]

时间:2009-04-12 05:10:54

标签: c++ c windows

如何以编程方式确定当前安装的Windows版本? 在区分vista和xp时。

2 个答案:

答案 0 :(得分:6)

如果您使用的是Win32,则可以使用GetVersionEx API来识别操作系统。

答案 1 :(得分:2)

这里的直接问题是你想测试什么? check for features比比较版本号更好(因为Windows有各种缩减版本)。

VerifyVersionInfo将同时执行这两项操作,并且是比较主要/次要数字的推荐方法。

BOOL IsAtLeast2008DC() {

  OSVERSIONINFOEX osvi = {0};
  DWORDLONG mask = 0;

  osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
  osvi.dwMajorVersion = 6;
  osvi.dwMinorVersion = 0;
  osvi.wServicePackMajor = 0;
  osvi.wServicePackMinor = 0;
  osvi.wProductType = VER_NT_DOMAIN_CONTROLLER;


  VER_SET_CONDITION(mask, VER_MAJORVERSION, VER_GREATER_EQUAL);
  VER_SET_CONDITION(mask, VER_MINORVERSION, VER_GREATER_EQUAL);
  VER_SET_CONDITION(mask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL);
  VER_SET_CONDITION(mask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
  VER_SET_CONDITION(mask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL);
  VER_SET_CONDITION(mask, VER_PRODUCT_TYPE, VER_EQUAL);

  return VerifyVersionInfo(&osvi,
      VER_MAJORVERSION | VER_MINORVERSION |
      VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR |
      VER_PRODUCT_TYPE, 
      mask
      );

}

要测试Vista或更高版本,请删除提及产品类型的行。您会找到更多示例here,但请注意您要检查的内容。