GetVersionExW 函式 (sysinfoapi.h)
[GetVersionEx可能會在Windows 8.1之後變更或無法使用。 請改用 版本協助程式函式]
隨著發行Windows 8.1,GetVersionEx API 的行為在作業系統版本所傳回的值中已變更。 GetVersionEx函式所傳回的值現在取決於應用程式的資訊清單方式。
未針對Windows 8.1或Windows 10顯示的應用程式會傳回 Windows 8 作業系統版本值, (6.2) 。 一旦應用程式針對指定的作業系統版本進行資訊清單, GetVersionEx 一律會傳回應用程式在未來版本中所顯示的版本。 若要向應用程式顯示Windows 8.1或Windows 10,請參閱以 Windows 應用程式為目標。
語法
NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExW(
[in, out] LPOSVERSIONINFOW lpVersionInformation
);
參數
[in, out] lpVersionInformation
接收作業系統資訊的 OSVERSIONINFOW 或 OSVERSIONINFOEXW 結構。
在呼叫 GetVersionEx 函式之前,請視需要設定結構的 dwOSVersionInfoSize 成員,以指出要傳遞至此函式的資料結構。
傳回值
如果函式成功,則傳回值是非零值。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 如果您為OSVERSIONINFOW或OSVERSIONINFOEXW結構的成員指定了不正確值,函式就會失敗。
備註
識別目前的作業系統通常不是判斷特定作業系統功能是否存在的最佳方式。 這是因為作業系統可能已在可轉散發 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 |