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