共用方式為


OSVERSIONINFOEXW 結構 (winnt.h)

包含作業系統版本資訊。 此資訊包括主要和次要版本號碼、組建編號、平臺標識符,以及安裝在系統上的產品套件和最新 Service Pack 的相關信息。 此結構會與 GetVersionExVerifyVersionInfo 函式搭配使用。

語法

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

識別系統上可用產品套件的位掩碼。 這個成員可以是下列值的組合。

價值 意義
VER_SUITE_BACKOFFICE
0x00000004
Microsoft已安裝 BackOffice 元件。
VER_SUITE_BLADE
0x00000400
已安裝 Windows Server 2003、Web Edition。
VER_SUITE_COMPUTE_SERVER
0x00004000
已安裝 Windows Server 2003 計算叢集版本。
VER_SUITE_DATACENTER
0x00000080
已安裝 Windows Server 2008 Datacenter、Windows Server 2003、Datacenter Edition 或 Windows 2000 Datacenter Server。
VER_SUITE_ENTERPRISE
0x00000002
已安裝 Windows Server 2008 Enterprise、Windows Server 2003、Enterprise Edition 或 Windows 2000 Advanced Server。 如需此位旗標的詳細資訊,請參閱一節。
VER_SUITE_EMBEDDEDNT
0x00000040
已安裝 Windows XP Embedded。
VER_SUITE_PERSONAL
0x00000200
已安裝 Windows Vista Home Premium、Windows Vista Home Basic 或 Windows XP Home Edition。
VER_SUITE_SINGLEUSERTS
0x00000100
支援遠端桌面,但只支援一個互動式會話。 除非系統在應用程式伺服器模式中執行,否則會設定此值。
VER_SUITE_SMALLBUSINESS
0x00000001
Microsoft Small Business Server 一次安裝在系統上,但可能已升級至另一個版本的 Windows。 如需此位旗標的詳細資訊,請參閱一節。
VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020
Microsoft Small Business Server 會隨著強制限制的用戶端授權一起安裝。 如需此位旗標的詳細資訊,請參閱一節。
VER_SUITE_STORAGE_SERVER
0x00002000
已安裝 Windows Storage Server 2003 R2 或 Windows Storage Server 2003is。
VER_SUITE_TERMINAL
0x00000010
已安裝終端機服務。 這個值一律會設定。

如果已設定 VER_SUITE_TERMINAL 但未設定 VER_SUITE_SINGLEUSERTS,則系統會在應用程式伺服器模式中執行。

VER_SUITE_WH_SERVER
0x00008000
已安裝 Windows Home Server。
VER_SUITE_MULTIUSERTS
0x00020000
已啟用AppServer模式。

wProductType

系統的任何其他資訊。 這個成員可以是下列其中一個值。

價值 意義
VER_NT_DOMAIN_CONTROLLER
0x0000002
系統是域控制器,操作系統是 Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。
VER_NT_SERVER
0x0000003
操作系統為 Windows Server 2012、Windows Server 2008 R2、Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

請注意,也是域控制器的伺服器會回報為 VER_NT_DOMAIN_CONTROLLER,而不是 VER_NT_SERVER

VER_NT_WORKSTATION
0x0000001
操作系統為 Windows 8、Windows 7、Windows Vista、Windows XP Professional、Windows XP Home Edition 或 Windows 2000 Professional。

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 版本 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 標頭會根據 UNICODE 預處理器常數的定義,將 OSVERSIONINFOEX 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
標頭 winnt.h (包括 Windows.h)

另請參閱

IsWow64Process

OSVERSIONINFO

版本協助程式 API