GetVersionExA 関数 (sysinfoapi.h)
GetVersionExA は、Windows 8.1 以降のリリースで変更または使用できない可能性があります。 代わりに、
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
備考
現在のオペレーティング システムを特定することは、通常、特定のオペレーティング システム機能が存在するかどうかを判断する最適な方法ではありません。 これは、オペレーティング システムに再頒布可能 DLL に新機能が追加された可能性があるためです。
GetVersionEx を使用してオペレーティング システムのプラットフォームまたはバージョン番号を確認するのではなく、機能自体が存在するかどうかをテストします。 詳細については、「オペレーティング システムのバージョンを
GetSystemMetrics 関数は、現在のオペレーティング システムに関する追加情報を提供します。
積 | 設定 |
---|---|
Windows XP Media Center Edition | SM_MEDIACENTER |
Windows XP Starter Edition | SM_STARTER |
Windows XP タブレット PC エディション | SM_TABLETPC |
Windows Server 2003 R2 | SM_SERVERR2 |
特定のオペレーティング システムまたはオペレーティング システムの機能を確認するには、IsOS 関数を使用します。 GetProductInfo 関数は、製品の種類を取得します。
リモート コンピューター上のオペレーティング システムの情報を取得するには、NetWkstaGetInfo 関数、Win32_OperatingSystem WMI クラス、または IADsComputer インターフェイスの OperatingSystem プロパティを使用します。
現在のシステム バージョンを必要なバージョンと比較するには、GetVersionEx を使用して比較を自分で実行するのではなく、VerifyVersionInfo 関数を使用します。
互換モードが有効な場合、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 を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 Professional [デスクトップ アプリ |UWP アプリ] |
サポートされる最小サーバー | Windows 2000 Server [デスクトップ アプリ |UWP アプリ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | sysinfoapi.h (Windows.h を含む) |
ライブラリ | Kernel32.lib |
DLL | Kernel32.dll |
関連項目
OSVERSIONINFOA の
OSVERSIONINFOEXA の
VerifyVersionInfo の