Поделиться через


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

Требования

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

См. также

GetVersion

OSVERSIONINFOA

OSVERSIONINFOEXA

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

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

VerifyVersionInfo

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