Win7&2008R2: OS のバージョンチェック

一般的な互換性問題であるネタです。
Windows のバージョン番号はバージョンアップに伴い変更されるわけです。

 OS 名称  値
 Windows 2000  5.0
 Windows XP (32bit)  5.1
 Windows Server 2003 / Windows XP x64 Edition  5.2
 Windows Vista / Windows Server 2008  6.0
 Windows 7 / Windows Server 2008 R2  6.1

Windows 7 だから、7.0 だと思いきや、実は 6.1 なんです。
OS のバージョン情報を取得するには、Win32 API GetVersionEx() をよく使います。

しかしながら、Windows Vista 以降では、新しく GetProductInfo() という API が追加されています。
こちらの方が、Vista 以降では分解能があります。

API の実際の使い方ですが、バージョン判定は代々、MSDN が便利なサンプルを提供していますので
これを使うのがベストです。

このサンプルでは、Windows 7 & 2008 R2 に対して GetProductInfo() を使っていません。
MSDN にある GetProductInfo() の 説明では、最新の SKU に対応していない(Windows 7 Professionl が無い)ようですが
ヘッダ(WinNT.h)を見たところでは、最新の SKU に対応しています。
でも、Windows 7 RC 版は Ultimate しかないので、他の SKU で試すことができない。。。

このサンプルをベースに表示するダイアログを作ってみました。

セミナーの際にデモで使おうと思います。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。