Идентификация версии Windows [C / C ++] - PullRequest
4 голосов
/ 12 апреля 2009

Как можно программно определить версию установленных в настоящее время окон? Как в различие между Vista и XP.

Ответы [ 2 ]

6 голосов
/ 12 апреля 2009

Если вы используете Win32, вы можете использовать GetVersionEx API для идентификации ОС.

2 голосов
/ 12 апреля 2009

Непосредственный вопрос здесь - что вы пытаетесь проверить? Лучше проверить функции , чем сравнить номера версий (поскольку существуют различные урезанные версии 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 или более позднюю версию, удалите строки, в которых указан тип продукта. Вы найдете больше примеров здесь , но будьте осторожны с тем, что вы проверяете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...