GetVersionExA 函式 (sysinfoapi.h)
GetVersionExA 可能會在 Windows 8.1 之後變更或無法使用版本。 請改用 版本協助程式函式。 如需 Windows 10 應用程式,請參閱以 Windows 應用程式為目標。
隨著發行 Windows 8.1,GetVersionEx API 的行為已變更為操作系統版本所傳回的值。 GetVersionEx 函式傳回的值現在取決於應用程式的指令清單方式。
未針對 Windows 8.1 或 Windows 10 顯示的應用程式會傳回 (6.2) Windows 8 OS 版本值。 一旦應用程式針對指定的操作系統版本進行指令清單, 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。 如果您為 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 函式、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) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |