Функция 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

Структура OSVERSIONINFOA или OSVERSIONINFOEXA , которая получает сведения об операционной системе.

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

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

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

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

Комментарии

Определение текущей операционной системы обычно не является лучшим способом определить, присутствует ли определенная функция операционной системы. Это связано с тем, что в операционной системе могли быть добавлены новые функции в распространяемой библиотеке 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 или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

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

См. также

GetVersion

OSVERSIONINFOA

OSVERSIONINFOEXA

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

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

VerifyVersionInfo

Функции вспомогательной версии