|
.NET TIPS Windows OSの種類やバージョンを判別するには?デジタルアドバンテージ2004/04/16 |
![]() |
|
|
|
ある特定バージョンの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
|
||||
| Version.Minorプロパティ |
0
|
10
|
90
|
0
|
0
|
1
|
2
|
| Windows |
95※
|
98
|
Me
|
NT 4.0
|
2000
|
XP
|
2003
|
| Windows OSの判別表 | |||||||
| ここに挙げているものが、すべての組み合わせではない。より詳しくはリファレンス・マニュアルを参照していただきたい。 | |||||||
| ※.NET Framework は、Windows 95上では動作しないので実際にはこの組み合わせはあり得ない。 | |||||||
これらの組み合わせを使ってWindows OSの種類を判別するサンプル・プログラムを次に示す。
|
|
| Windows OSの種類を取得するサンプル・コード(C#) | |
|
サンプル・プログラム(C#:winver1.cs)のダウンロード
|
|
|
| Windows OSの種類を取得するサンプル・コード(VB.NET) | |
|
サンプル・プログラム(VB.NET:winver1.vb)のダウンロード
|
筆者の環境(Windows XP SP1)でこれをコマンド・プロンプトから実行すると、
Windows XP (Platform Win32NT Version 5.1 Build 2600)
と出力された。
より詳しくWindows OSのバージョンを調べるには?
以上の方法を使えば、おおよそのWindows OSの種類を取得できるので、多くの場合はこれで事足りるだろう。しかし、これよりもっと詳しいバージョン情報を取得したい場合もあるだろう。例えば、Windows XP Home EditionとWindows XP Professionalでアプリケーションの動作を切り替えたい場合では、Windows XPであることを判別するだけでは不十分だ。
より詳しいWindows OSのバージョンを取得するには、Win32 APIのGetVersionEx関数を使う必要がある。GetVersionEx関数を使えば、Windows XP Home EditionとProfessionalの違いだけでなく、Windows NT 4.0 Professional/Serverの違い、Windows 2000 Professional/Server/Advanced Serverの違い、Windows Server 2003, Standard Edition/Enterprise Edition/Web Editionの違い、Windows 98/Windows 98 Second Editionの違い*1、適用されているサービスパックの種類などを判別できるようになる。
| *1 マイクロソフトのサポート技術情報では、OperatingSystemオブジェクトのVersion.Revisionプロパティの値を文字列に変換して“2222A”と比較し、これを判別しているが、Version.Revisionプロパティは整数型であり、この方法は明らかに間違いである。 |
そのサンプル・プログラムのダウンロードは以下のとおりだ。
■詳細なWindows OSのバージョンを取得するサンプル・プログラム
- サンプル・プログラム(C#:winver2.cs)のダウンロード
- サンプル・プログラム(VB.NET:winver2.vb)のダウンロード
なお、Windows NT 4.0のService Pack 6(SP6)より前のバージョンでは、GetVersionEx関数では取得できない情報があるので、それについてはレジストリから直接、取得している。
筆者の環境でコマンド・プロンプからこのサンプル・プログラムを実行すると、
Windows XP Professional (Platform Win32NT Version 5.1 Build 2600) Service Pack 1
|
カテゴリ:クラス・ライブラリ 処理対象:Windows環境 使用ライブラリ:OperatingSystemクラス(System名前空間) 使用ライブラリ:Environmentクラス(System名前空間) 使用ライブラリ:PlatformID列挙体(System名前空間) |
| 「.NET TIPS」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


