OSがWin9xかWinNTかを判断する方法




時にWin9xとNTで同じ関数が使えない場合があります。
まあ、はなから片方のOSでしか使えない仕様にしてしまえばいいのですが、
そういう事ができない場合もあります。
かといって、9xとNTの2バージョン作るものバカらしいのでロジックで 判断させることにします。

(サンプル)
	OSVERSIONINFO	OsVer;		// OSバージョン構造体
	// 自OSを初期化
	E_My_OS = D_WinUnknown;
	// OSのバージョンを取得する
	OsVer.dwOSVersionInfoSize = sizeof(OsVer);
	Bool_Ret = GetVersionEx( &OsVer );
	if( OsVer.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
	{
		// OSがWin9x
		E_My_OS = D_Win9x;
	}
	if( OsVer.dwPlatformId == VER_PLATFORM_WIN32_NT )
	{
		// OSがWinNT
		E_My_OS = D_WinNT;
	}
使用する関数はGetVersionEx()関数でこれにOSVERSIONINFOという構造体を渡します。
構造体は関数に渡す前にそれ自信のサイズを.dwOSVersionInfoSizeにセットしてやら ねばなりません。
関数が正常すると.dwPlatformIdにOSの種類が返ってきます。
サンプルでは処理していませんがWin3.1も判別できます。
それと、OSのメジャー、マイナーバージョンも分かります。
WinNT5.0以降では構造体がOSVERSIONINFOEXになるらしい。仕事用は4.0だからか コンパイルエラーになった。




N総研ソフトウェア開発部のTOPに戻る。

このページに関するご意見・質問は
ドンタコスN村 E-mail:wnaka@coco.ned.co.jp
まで送信してください。