ウィンドウズのバージョンを調べる

最終更新 2003 10/10

サンプルのダウンロード → API_GetVersion.lzh(36k)

サンプルプログラムのスクリーンショット

全ソースコード


    
GetVersionEx 関数
    
    対応しているバージョン
    95, 98, Me, CE1.0以降, NT3.1以降, 2000, XP
    
    使用するヘッダとライブラリ
    winbase.h
    kernel32.lib
ウィンドウズのバージョンを調べるには GetVersionEx() 関数を使います。 引数には OSVERSIONINFO 構造体変数のポインタを指定します。 そうすると必要なデータ がOSVERSIONINFO 構造体変数に格納されて返って くるので、その返されたデータから、どのヴァージョンなのかを判断します。 ウィンドウズのバージョンは大きく分けると 3.1、95、NTの3つに 分類することができます。 で、それぞれにメジャーバージョン、マイナーバージョンがあるので それらを調べて最終的にどのバージョンかを判断します。 ただ、CEについては自分の周りに資料がないので判定できません。 MSDNライブラリのサンプルにも3.1、95、98、NTの分類方法しか 書かれていないので、例えば95のOSR2とか、そこまで細かく判定したい 場合は実際にそのOSで GetVersionEx() 関数を呼び出して OSVERSIONINFO の値を調べるしかないと思います。 今の所、自分の周りにその環境がないので調べようがありません。 ネットで誰か調べた人がいないかどうか調査中です。 一応、2000についてははっきりしているので、対応させておきました。 たぶん、ウィンドウズXPはNTのメジャーバージョン6だと思うのですが まだ確認していないので対応していません。 上のサンプルで作成した GetWindowsVersion() 関数ですが、実行すると バイト型の数値を返します。 その数値に対してマクロを割り当ててあるのでマクロを使ってヴァージョンを 判断すると楽だと思います。 たとえばウィンドウズ98で GetWindowsVersion() 関数を使うと 3 が 返ってきますが、3 には VER_WIN98 を割り当てているので VER_WIN98 と いう名前でも扱えます。 簡単な使用例 BYTE version = GetWindowsVersion(); switch( version ) { case VER_WIN95: //ウィンドウズ95用の処理 break; case VER_WIN98: //ウィンドウズ98用の処理 break; case VER_WINME: //ウィンドウズMe用の処理 break; case VER_WINNT: case VER_WINNT4: //ウィンドウズNT用の処理 break; case VER_WIN2K: //ウィンドウズ2000用の処理 break; default: //バージョン不明 }

| home |