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

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

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

返回值

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

如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError。 如果为 OSVERSIONINFOAOSVERSIONINFOEXA 结构 成员指定 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 Professional [桌面应用 |UWP 应用]
支持的最低服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 窗户
标头 sysinfoapi.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

GetVersion

OSVERSIONINFOA

OSVERSIONINFOEXA

操作系统版本

系统信息函数

VerifyVersionInfo

版本帮助程序函数