GetVersionExA 関数 (sysinfoapi.h)
getVersionExA は、Windows 8.1後にリリースで変更または使用できない場合があります。 代わりに、 バージョン ヘルパー関数を使用します。 Windows 10アプリについては、「Windows 用アプリケーションのターゲット設定」を参照してください。
Windows 8.1のリリースでは、GetVersionEx API の動作が、オペレーティング システムのバージョンに対して返される値で変更されました。 GetVersionEx 関数によって返される値は、アプリケーションのマニフェスト方法によって異なります。
Windows 8.1またはWindows 10用にマニフェストされていないアプリケーションは、Windows 8 OS バージョン値 (6.2) を返します。 特定のオペレーティング システムバージョンに対してアプリケーションがマニフェストされると、 GetVersionEx は、今後のリリースでアプリケーションがマニフェストされるバージョンを常に返します。 Windows 8.1またはWindows 10用にアプリケーションをマニフェストするには、「Windows 用アプリケーションのターゲット設定」を参照してください。
構文
NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExA(
[in, out] LPOSVERSIONINFOA lpVersionInformation
);
パラメーター
[in, out] lpVersionInformation
オペレーティング システム情報を受け取る OSVERSIONINFOA または OSVERSIONINFOEXA 構造体。
GetVersionEx 関数を呼び出す前に、構造体の dwOSVersionInfoSize メンバーを適宜設定して、この関数に渡されるデータ構造を示します。
戻り値
関数が成功した場合、戻り値は 0 以外の値になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 OSVERSIONINFOA または OSVERSIONINFOEXA 構造体の dwOSVersionInfoSize メンバーに無効な値を指定すると、関数は失敗します。
注釈
現在のオペレーティング システムを特定することは、通常、特定のオペレーティング システム機能が存在するかどうかを判断する最適な方法ではありません。 これは、オペレーティング システムに再頒布可能 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 プロパティを使用します。
現在のシステム バージョンと必要なバージョンを比較するには、 GetVersionEx を使用して比較を自分で実行する代わりに VerifyVersionInfo 関数を使用します。
互換モードが有効な場合、 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 ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして GetVersionEx を定義します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | sysinfoapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |