Функция GetVersionExA (sysinfoapi.h)

GetVersionExA может быть изменен или недоступен для выпусков после Windows 8.1. Вместо этого используйте вспомогательные функции версии. Сведения о приложениях Windows 10 см. в статье "Назначение приложений для Windows".

В выпуске Windows 8.1 поведение API GetVersionEx изменилось в значении, возвращаемом для версии операционной системы. Значение, возвращаемое функцией GetVersionEx , теперь зависит от того, как манифестируется приложение.

Приложения, не манифестированные для Windows 8.1 или Windows 10, возвращают значение версии ОС Windows 8 (6.2). После манифеста приложения для заданной версии операционной системы GetVersionEx всегда возвращает версию, для которую приложение будет манифестировано в будущих выпусках. Чтобы манифестировать приложения для Windows 8.1 или Windows 10, см. сведения о целевом приложении для Windows.

Синтаксис

NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExA(
  [in, out] LPOSVERSIONINFOA lpVersionInformation
);

Параметры

[in, out] lpVersionInformation

Структура OSVERSIONINFO или OSVERSIONINFOEX , получающая сведения об операционной системе.

Перед вызовом функции GetVersionEx задайте член dwOSVersionInfoSize структуры соответствующим образом, чтобы указать, какая структура данных передается этой функции.

Возвращаемое значение

Если функция завершается успешно, возвращаемое значение является ненулевым значением.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Функция завершается ошибкой, если указать недопустимое значение для элемента dwOSVersionInfoSize структуры OSVERSIONINFO или OSVERSIONINFOEX .

Комментарии

Определение текущей операционной системы обычно не является лучшим способом определить, присутствует ли определенная функция операционной системы. Это связано с тем, что операционная система может иметь новые функции, добавленные в распространяемую библиотеку DLL. Вместо того, чтобы использовать GetVersionEx для определения номера версии или платформы операционной системы, проверьте наличие самой функции. Дополнительные сведения см. в разделе "Версия операционной системы".

Функция GetSystemMetrics предоставляет дополнительные сведения о текущей операционной системе.

Продукт Параметр
Windows XP Media Center Edition SM_MEDIACENTER
Windows XP Starter Edition SM_STARTER
Windows XP Tablet PC Edition SM_TABLETPC
Windows Server 2003 R2 SM_SERVERR2
 

Чтобы проверить наличие определенных операционных систем или функций операционной системы, используйте функцию IsOS . Функция GetProductInfo извлекает тип продукта.

Чтобы получить сведения об операционной системе на удаленном компьютере, используйте функцию NetWkstaGetInfo , класс WMI Win32_OperatingSystem или свойство OperatingSystem интерфейса IADsComputer .

Чтобы сравнить текущую системную версию с требуемой версией, используйте функцию VerifyVersionInfo вместо использования GetVersionEx для самостоятельного сравнения.

Если режим совместимости действует, функция GetVersionEx сообщает операционной системе, как она идентифицирует себя, что может не быть установленной операционной системой. Например, если режим совместимости действует, GetVersionEx сообщает операционную систему, выбранную для совместимости приложений.

Примеры

При использовании функции GetVersionEx для определения того, выполняется ли приложение в определенной версии операционной системы, проверьте номера версий, которые больше или равны нужным номерам версий. Это гарантирует успешность теста для более поздних версий операционной системы. Например, если приложению требуется Windows XP или более поздняя версия, используйте следующий тест.

#include <windows.h>
#include <stdio.h>

void main()
{
    OSVERSIONINFO osvi;
    BOOL bIsWindowsXPorLater;

    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

    GetVersionEx(&osvi);

    bIsWindowsXPorLater = 
       ( (osvi.dwMajorVersion > 5) ||
       ( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) ));

    if(bIsWindowsXPorLater)
        printf("The system meets the requirements.\n");
    else printf("The system does not meet the requirements.\n");
}

Пример, определяющий текущую операционную систему, см. в разделе "Получение системной версии".

Примечание

Заголовок sysinfoapi.h определяет GetVersionEx как псевдоним, который автоматически выбирает версию anSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования нейтрализуемого кодировки псевдонима с кодом, который не является кодировкой нейтральным, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

   
Минимальная версия клиента Windows 2000 Профессиональный [классические приложения | Приложения UWP]
Минимальная версия сервера Windows 2000 Server [классические приложения | Приложения UWP]
Целевая платформа Windows
Header sysinfoapi.h (включая Windows.h)
Библиотека Kernel32.lib
DLL Kernel32.dll

См. также

GetVersion

OSVERSIONINFO

OSVERSIONINFOEX

Версия операционной системы

Системные информационные функции

VerifyVersionInfo

Вспомогательные функции версии