GetVersionExA 函数 (sysinfoapi.h)

Windows 8.1后,GetVersionExA 可能会更改或不可用于发布。 请改用 版本帮助程序函数。 有关Windows 10应用,请参阅面向 Windows 的应用程序

随着 Windows 8.1 的发布,GetVersionEx API 的行为在它将为操作系统版本返回的值中发生了变化。 GetVersionEx 函数返回的值现在取决于应用程序的清单方式。

未针对Windows 8.1或Windows 10进行清单的应用程序将返回Windows 8 OS 版本值 (6.2) 。 为给定的操作系统版本对应用程序进行清单后, GetVersionEx 将始终返回应用程序在未来版本中为其清单的版本。 若要针对Windows 8.1或Windows 10来清单应用程序,请参阅面向 Windows 的应用程序

语法

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

参数

[in, out] lpVersionInformation

接收操作系统信息的 OSVERSIONINFOAOSVERSIONINFOEXA 结构。

在调用 GetVersionEx 函数之前,请根据需要设置结构的 dwOSVersionInfoSize 成员,以指示要传递给此函数的数据结构。

返回值

如果函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 如果为 OSVERSIONINFOA 或 OSVERSIONINFOEXA 结构的 dwOSVersionInfoSize 成员指定了无效值,则该函数将失败。

注解

识别当前操作系统通常不是确定是否存在特定操作系统功能的最佳方法。 这是因为操作系统可能已在可再发行 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 函数、Win32_OperatingSystem WMI 类或 IADsComputer 接口的 OperatingSystem 属性。

若要将当前系统版本与所需版本进行比较,请使用 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 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 sysinfoapi.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

GetVersion

OSVERSIONINFOA

OSVERSIONINFOEXA

操作系统版本

系统信息函数

VerifyVersionInfo

版本帮助程序函数