.NET TIPS Windows OSのバージョンを判別するには?【Vista対応】[2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2007/02/09 |
|
|
※本稿はWindows Vistaおよび.NET Framework 2.0を対象に、「TIPS:Windows OSの種類やバージョンを判別するには?」を改訂したものです。 |
ある特定バージョンのWindowsに特有な機能(例えばWindows XPのCD書き込み機能など)をアプリケーションから利用したい場合、プログラムではまずWindows OSのバージョンを取得し、そのバージョンごとに処理を分岐させる必要がある。そのようなときは、OperatingSystemクラス(System名前空間)を使うとWindows OSのバージョンを簡単に判別できる。
Windows OSのバージョンを判別するには?
OperatingSystemクラスを使ってWindows OSを判別するには、まずEnvironmentクラス(System名前空間)のOSVersionプロパティからOperatingSystemオブジェクトを取得する。このオブジェクトのPlatformプロパティ、Version.Majorプロパティ、Version.Minorプロパティの値の組み合わせからOSを特定することができる。なお、PlatformプロパティはPlatformID列挙体(System名前空間)で定義された値で、Version.MajorプロパティとVersion.Minorプロパティは整数値である。
この3つのプロパティの値の組み合わせとWindows OSの対応関係を次の表にまとめた。
Platformプロパティ | PlatformID.Win32Windows | PlatformID.Win32NT | ||||||
Version.Majorプロパティ | 4 | 4 | 5 | 6 | ||||
Version.Minorプロパティ | 0 | 10 | 90 | 0 | 0 | 1 | 2 | 0 |
Windows OS | 95*1 | 98 | Me | NT 4.0*2 | 2000 | XP | 2003 | Vista |
Windows OSの判別表 | ||||||||
*1 すべての.NET Frameworkは、Windows 95上では動作しないので実際にはこの組み合わせはあり得ない。 | ||||||||
*2 .NET Framework 2.0は、Windows NT 4.0上では動作しないので実際にはこの組み合わせはあり得ない。 |
.NET Framework 2.0のOperatingSystemクラスでは、これらのプロパティに加えてServicePackプロパティが追加されている。このプロパティからはWindows OSに提供されたサービス・パック名(例えば「Service Pack 2」など)を得られる。
これらの組み合わせを使ってWindows OSのバージョンを判別するサンプル・プログラムを次に示す。
|
||
Windows OSのバージョンを取得するサンプル・プログラム(上:C#、下:VB) |
Windows Vista Ultimate環境でこれをコマンド・プロンプトから実行すると、
Windows Vista (Platform Win32NT Version 6.0 Build 6000)
と出力された。
なお、OSのバージョンによってアプリケーションの起動をブロックするようなコードを実装する場合、将来のバージョンのOSでもプログラムがそのまま動作するように、「6.0(=Vista)以降」というロジックもあらかじめ実装しておいた方がよいだろう。
たいていの場合、本稿のバージョンの判別方法で事足りるだろうが、アプリケーションによってはさらに細かなエディションの判定、例えばWindows Vistaの「Ultimate」と「Home Basic」の違いなども判別しなければならないケースもあるだろう。この方法については「TIPS:Windows OSのエディションまで細かく判別するには?【Vista対応】」で紹介している。
利用可能バージョン:.NET Framework 2.0のみ カテゴリ:クラス・ライブラリ 処理対象:Windows環境 使用ライブラリ:OperatingSystemクラス(System名前空間) 使用ライブラリ:Environmentクラス(System名前空間) 使用ライブラリ:PlatformID列挙体(System名前空間) 関連TIPS:Windows OSの種類やバージョンを判別するには? 関連TIPS:Windows OSのエディションまで細かく判別するには?【Vista対応】 |
|
「.NET TIPS」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|