次の方法で共有


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、コンピューティング クラスター エディションがインストールされています。
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 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_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 タブレット PC エディション SM_TABLETPC
 

例については、「システム バージョンの取得」を参照してください。

手記

winnt.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして OSVERSIONINFOEX を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

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

関連項目

IsWow64Process の

OSVERSIONINFO を する

バージョン ヘルパー API