C++によるWindows OS判定(9x系・NT系) 【やってみた】


Visual C++でプログラムを作っていて、たまにOS判定特に9x系(Windows 95,98,Me)かNT系(Windows 2000,XP,Vista)かを知りたいことがある。そんなときのためのTips。

スポンサーリンク

GetVersionEx

現在のOSのバージョンを調べるAPI。MSDNによれば、Windows 95 以降Windows NT 3.5 以降で使えるとのこと。

使い方は簡単。下のような感じ。

OSVERSIONINFOA OsVersionInfo;
OsVersionInfo.dwOSVersionInfoSize = sizeof( OsVersionInfo );
GetVersionExA( &OsVersionInfo );

ただし、このように末尾にAがつくもの(マルチバイト文字列用)でないと9x系でサポートされていないのでこちらを使う。

さて、関数を実行したら上記でいうOsVersionInfoに値がセットされるのでそれを見る。今回のばあい、9x系かNT系かの判定ということで、dwPlatformIdというプラットフォームを示す部分だけを見ればよい。この値は、9x系の場合VER_PLATFORM_WIN32_WINDOWSとなり、NT系の場合VER_PLATFORM_WIN32_NTになるようだ。(いまだにNT系というのも何か変な気がするが、、、)

ちなみに、今使ってるWindows XPだとこのような値になった。

dwOSVersionInfoSize	148	unsigned long
dwMajorVersion	5	unsigned long
dwMinorVersion	1	unsigned long
dwBuildNumber	2600	unsigned long
dwPlatformId	2	unsigned long
szCSDVersion	0x0012fed4 "Service Pack 2"	char [128]
スポンサーリンク
カテゴリー: やってみた   パーマリンク

コメントは受け付けていません。