OSVERSIONINFOEXA 構造体 (winnt.h)

オペレーティング システムのバージョン情報が含まれています。 この情報には、メジャー バージョン番号とマイナー バージョン番号、ビルド番号、プラットフォーム識別子、およびシステムにインストールされている製品スイートと最新の Service Pack に関する情報が含まれます。 この構造体は、 GetVersionEx 関数と VerifyVersionInfo 関数で使用されます。

構文

typedef struct _OSVERSIONINFOEXA {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;
  DWORD dwMinorVersion;
  DWORD dwBuildNumber;
  DWORD dwPlatformId;
  CHAR  szCSDVersion[128];
  WORD  wServicePackMajor;
  WORD  wServicePackMinor;
  WORD  wSuiteMask;
  BYTE  wProductType;
  BYTE  wReserved;
} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;

メンバー

dwOSVersionInfoSize

このデータ構造のサイズ (バイト単位)。 このメンバーを に設定します sizeof(OSVERSIONINFOEX)

dwMajorVersion

オペレーティング システムのメジャー バージョン番号。 詳細については、「解説」を参照してください。

dwMinorVersion

オペレーティング システムのマイナー バージョン番号。 詳細については、「解説」を参照してください。

dwBuildNumber

オペレーティング システムのビルド番号。

dwPlatformId

オペレーティング システム プラットフォーム。 このメンバーは VER_PLATFORM_WIN32_NT (2) にすることができます。

szCSDVersion[128]

システムにインストールされている最新の Service Pack を示す null で終わる文字列 ("Service Pack 3" など)。 Service Pack がインストールされていない場合、文字列は空です。

wServicePackMajor

システムにインストールされている最新の Service Pack のメジャー バージョン番号。 たとえば、Service Pack 3 の場合、メジャー バージョン番号は 3 です。 Service Pack がインストールされていない場合、値は 0 です。

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、Compute Cluster Edition がインストールされています。
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
リモート デスクトップはサポートされていますが、サポートされている対話型セッションは 1 つだけです。 この値は、システムがアプリケーション サーバー モードで実行されていない限り設定されます。
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 2003 がインストールされています。
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_SERVERではなく、VER_NT_DOMAIN_CONTROLLERとして報告されることに注意 してください

VER_NT_WORKSTATION
0x0000001
オペレーティング システムは、Windows 8、Windows 7、Windows Vista、Windows XP Professional、Windows XP Home Edition、または Windows 2000 Professional です。

wReserved

将来利用するために予約されています。

注釈

バージョン情報に依存することは、機能をテストする最善の方法ではありません。 代わりに、関心のある機能については、ドキュメントを参照してください。 機能検出の一般的な手法の詳細については、「 オペレーティング システムのバージョン」を参照してください。

特定のオペレーティング システムが必要な場合は、1 つのオペレーティング システムのテストを設計するのではなく、サポートされている最小バージョンとして使用してください。 これにより、検出コードは将来のバージョンの Windows で引き続き機能します。

次の表は、サポートされているバージョンの Windows によって返される値をまとめたものです。 "Other" というラベルの列の情報を使用して、同じバージョン番号を持つオペレーティング システムを区別します。

オペレーティング システム バージョン番号 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_RESTRICTED フラグの両方が設定されるため、システムに Small Business Server がインストールされているかどうかを判断するには、 VER_SUITE_SMALLBUSINESS フラグだけに依存しないでください。 このインストールを 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 プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして OSVERSIONINFOEX を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
Header winnt.h (Windows.h を含む)

こちらもご覧ください

IsWow64Process

OSVERSIONINFO

バージョン ヘルパー API