Я хочу проверить, является ли версия операционной системы Windows Windows 2008 или выше.Я использую следующий фрагмент кода, он отлично работает в моей среде, но кто-то (заказчик) сообщил, что он не работает в своей среде операционной системы, но работает на других системах с Windows 2008 R2 SP1.Это не работает, значит, возвращает false, даже если ОС Windows 2008 R2 SP1.Что не так с кодом?
bool CheckIfOperatingISWindowsServer2K8orAbove()
{
OSVERSIONINFOEX winOSInfo;
winOSInfo.dwOSVersionInfoSize=sizeof(OSVERSIONINFOEX);
GetVersionEx(&winOSInfo);
//Check if windows version is 6 (i.e longhorn) and its windows server
if( winOSInfo.dwPlatformId==VER_PLATFORM_WIN32_NT && winOSInfo.dwMajorVersion == 6 && winOSInfo.wProductType == VER_NT_SERVER)
{
if ( winOSInfo.dwMinorVersion == 0 || winOSInfo.dwMinorVersion == 1 )
return true;
}
return false;
}
Я думаю, что только отсутствующая часть не инициализирует winOSInfo значением 0 с помощью ZeroMemory (& winfo, sizeof (OSVERSIONINFOEX));
Каково ваше мнение?Как вы думаете, не инициализация структуры OSVERSIONINFOEX вызывает такие проблемы?
Заранее спасибо.