osVERSIONINFOEXW 結構 (winnt.h)
包含作業系統版本資訊。 此資訊包括主要和次要版本號碼、組建編號、平臺標識符,以及產品套件的相關信息,以及安裝在系統上的最新 Service Pack 的相關信息。 此結構會與 GetVersionEx 和 VerifyVersionInfo 函式搭配使用。
語法
typedef struct _OSVERSIONINFOEXW {
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
WCHAR szCSDVersion[128];
WORD wServicePackMajor;
WORD wServicePackMinor;
WORD wSuiteMask;
BYTE wProductType;
BYTE wReserved;
} OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW;
成員
dwOSVersionInfoSize
此數據結構的大小,以位元組為單位。 將此成員設定為 sizeof(OSVERSIONINFOEX)
。
dwMajorVersion
操作系統的主要版本號碼。 如需詳細資訊,請參閱<備註>。
dwMinorVersion
操作系統的次要版本號碼。 如需詳細資訊,請參閱<備註>。
dwBuildNumber
操作系統的組建編號。
dwPlatformId
操作系統平臺。 這個成員可以 VER_PLATFORM_WIN32_NT (2) 。
szCSDVersion[128]
以 Null 結尾的字串,例如 「Service Pack 3」,表示系統上已安裝的最新 Service Pack。 如果未安裝 Service Pack,字串會是空的。
wServicePackMajor
系統上所安裝最新 Service Pack 的主要版本號碼。 例如,針對 Service Pack 3,主要版本號碼為 3。 如果未安裝 Service Pack,此值為零。
wServicePackMinor
系統上所安裝最新 Service Pack 的次要版本號碼。 例如,針對 Service Pack 3,次要版本號碼為 0。
wSuiteMask
識別系統上可用產品套件的位掩碼。 這個成員可以是下列值的組合。
wProductType
系統的任何其他資訊。 這個成員可以是下列其中一個值。
wReserved
保留供未來使用。
備註
依賴版本資訊不是測試功能的最佳方式。 相反地,請參閱相關功能的檔。 如需功能偵測常見技術的詳細資訊,請參閱 操作系統版本。
如果您必須要求特定作業系統,請務必使用它作為最低支援的版本,而不是設計一個操作系統的測試。 如此一來,您的偵測程式代碼將會繼續在未來的 Windows 版本中運作。
下表摘要說明支援的 Windows 版本所傳回的值。 使用標示為「其他」的數據行中的資訊,區分具有相同版本號碼的操作系統。
作業系統 | 版本號碼 | dwMajorVersion | dwMinorVersion | 其他 |
---|---|---|---|---|
Windows 10 | 10.0* | 10 | 0 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2016 | 10.0* | 10 | 0 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 8.1 | 6.3* | 6 | 3 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2012 R2 | 6.3* | 6 | 3 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 8 | 6.2 | 6 | 2 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2012 | 6.2 | 6 | 2 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows 7 | 6.1 | 6 | 1 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2008 R2 | 6.1 | 6 | 1 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows Server 2008 | 6.0 | 6 | 0 | OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION |
Windows Vista | 6.0 | 6 | 0 | OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION |
Windows Server 2003 R2 | 5.2 | 5 | 2 | GetSystemMetrics (SM_SERVERR2) != 0 |
Windows Home Server | 5.2 | 5 | 2 | OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER |
Windows Server 2003 | 5.2 | 5 | 2 | GetSystemMetrics (SM_SERVERR2) == 0 |
Windows XP Professional x64 Edition | 5.2 | 5 | 2 | (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64) |
Windows XP | 5.1 | 5 | 1 | 不適用 |
Windows 2000 | 5.0 | 5 | 0 | 不適用 |
*針對已針對 Windows 8.1 或 Windows 10 指令清單的應用程式。 未針對 Windows 8.1 或 Windows 10 顯示的應用程式會傳回 Windows 8 OS 版本值 (6.2) 。 若要針對 Windows 8.1 或 Windows 10 顯示應用程式,請參閱以 Windows 為目標的應用程式。 |
您不應該只依賴 VER_SUITE_SMALLBUSINESS 旗標來判斷是否已在系統上安裝 Small Business Server,因為安裝此產品套件時會同時設定此旗標和 VER_SUITE_SMALLBUSINESS_RESTRICTED 旗標。 如果您將此安裝升級至 Windows Server Standard Edition,則會清除 VER_SUITE_SMALLBUSINESS_RESTRICTED 旗標,不過, VER_SUITE_SMALLBUSINESS旗 標仍會保持設定狀態。 在此情況下,這表示此系統上已安裝Small Business Server。 如果此安裝進一步升級至 Windows Server,Enterprise Edition,則VER_SUITE_SMALLBUSINESS旗標會維持設定狀態。
如果相容性模式生效, OSVERSIONINFOEX 結構會包含針對 應用程式相容性選取之作業系統的相關信息。
若要判斷 Win32 型應用程式是否在 WOW64 上執行,請呼叫 IsWow64Process 函式。 若要判斷系統是否執行 64 位版本的 Windows,請呼叫 GetNativeSystemInfo 函 式。
GetSystemMetrics 函式提供下列有關目前操作系統的其他資訊。
產品 | 設定 |
---|---|
Windows Server 2003 R2 | SM_SERVERR2 |
Windows XP Media Center Edition | SM_MEDIACENTER |
Windows XP Starter Edition | SM_STARTER |
Windows XP Tablet PC Edition | SM_TABLETPC |
範例
如需範例,請參閱 取得系統版本。
注意
winnt.h 標頭會將 OSVERSIONINFOEX 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 專業版 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
標頭 | winnt.h (包括 Windows.h) |