| [System Environment] | |||||||||||||||
.NET Frameworkのバージョンを確認する方法
|
|||||||||||||||
|
|||||||||||||||
| 解説 |
.NET Frameworkは、Visual Studioなどで開発したCLR(Common Language Runtime)ベースのプログラム(一般には「.NETアプリケーション」などと呼ばれ、「マネージ・コード」で構成される)を実行するために必要なランタイムであり、実行するにはWindows環境に.NET Frameworkが組み込まれている必要がある。しかし.NET FrameworkはWindows 2000やWindows XPよりも後から登場したため、これらのOSでは初期状態ではインストールされていない。一方、Windows Server 2003以降のWindows OSには標準で.NET Frameworkが初期状態でインストールされている。その詳細については、次の記事を参照していただきたい。
- .NET Frameworkのバージョンを整理する(Windows TIPS)
従って.NETアプリケーションを展開するには、それ以前に、対象コンピュータに.NET Frameworkがインストールされているかどうかを確認しなければならない。
.NET Frameworkは、最初のVer.1.0の後、マイナー・バージョンアップを加えたVer.1.1、機能を追加したVer.2.0およびVer.3.0/3.5/4が提供されている。また、これらのバージョンに対して、不具合の修正などを行うService Packも提供されており、複数のバージョンが混在している状態だ。これまでに提供されている.NET FrameworkのバージョンとService Packをまとめると次のようになる。
| .NET Frameworkバージョン | 提供されているService Packレベル |
| .NET Framework 1.0 | SPなしの初期版、SP1、SP2、SP3 |
| .NET Framework 1.1 | SPなしの初期版、SP1 |
| .NET Framework 2.0 | SPなしの初期版、SP1、SP2 |
| .NET Framework 3.0 | SPなしの初期版、SP1、SP2 |
| .NET Framework 3.5 | SPなしの初期版、SP1 |
| .NET Framework 4 | SPなしの初期版 |
| .NET Frameworkの各バージョンとService Packレベル | |
.NETアプリケーションを展開するときには、対象コンピュータに.NET Frameworkがインストールされているかどうかだけでなく、.NET Frameworkのバージョンと適用済みService Packレベルを確認する必要がある。本稿では、その方法を解説する。
.NET Frameworkのインストール手順については以下の記事を参照していただきたい。
- .NET管理テク「Windows Updateで.NET Frameworkランタイムのインストール」(.NET管理者虎の巻)
- .NET管理テク「ネットワーク共有フォルダから.NET Frameworkランタイムのインストール」(.NET管理者虎の巻)
- .NET管理テク「アプリケーション・インストーラで.NET Frameworkランタイムのインストール」(.NET管理者虎の巻)
| 操作方法 |
.NET Frameworkのバージョンはレジストリで確認できる
.NET Frameworkのバージョンを確認する方法はいくつかあるが、確実なものは意外に少ない。まず[管理ツール]−[Microsoft .NET Framework Configuration]というGUIのツールを利用する方法では、.NET Frameworkのバージョンによってはこのツールがインストールされないことがある、という問題がある。また.NET Frameworkの構成ファイルのファイル・バージョンから判定するという方法では、セキュリティ・パッチなどの適用によってファイル・バージョンが上がることがあり、誤判定を招きやすい。
これに対し、レジストリを参照する方法では、どのWindows OSあるいはどの.NET Frameworkのバージョンでも、おおよそ共通の操作方法で確実にバージョンを確認できる。本稿ではこの方法について説明する。検出を自動実行するバッチ・ファイルも用意した。
なお、以下では日本語版.NET Frameworkのみを対象としている。
インストール済みの.NET FrameworkのバージョンとService Packを確認する
.NET Frameworkのインストーラは、インストール時に自身のバージョンなどの情報を特定のレジストリ・エントリに記録する。これをレジストリ・エディタなどで表示・確認すれば、インストール済みの.NET Frameworkのバージョンを把握できる。ただし、このレジストリ・エントリのパスおよび検出手順は.NET Framework 1.0とVer.1.1〜3.5、Ver.4でそれぞれ異なる。
■.NET Framework 1.0の場合
.NET Framework 1.0がインストールされているかどうかは、以下のレジストリ値で確認できる。
| 項目 | 内容 |
| キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\Full\ v1.0.3705\1041\Microsoft .NET Framework Full v1.0.3705 (1041) |
| 値の名前 | Install |
| 値の内容 | 0または存在しない→ランタイムがインストールされていない 1→ランタイムがインストール済み |
| .NET Framework 1.0ランタイムのインストール確認用レジストリ・エントリ | |
次に.NET Framework 1.0のService Packレベルを確認するには、以下のレジストリ値を参照する。内容のうち、最後の1桁がService Packレベルを表している。
| 項目 | 内容 |
| キー | HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\ {78705f0d-e8db-4b2d-8193-982bdda15ecd} または HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\ {FDC11A6F-17D1-48f9-9EA3-9051954BAA24} |
| 値の名前 | Version |
| 値の内容 | 1,0,3705,<SPレベル> <SPレベル>=0→ランタイムのService Packが未適用(初期版) <SPレベル>=1→ランタイムにService Pack 1適用済み <SPレベル>=2→ランタイムにService Pack 2適用済み <SPレベル>=3→ランタイムにService Pack 3適用済み |
| .NET Framework 1.0ランタイムのService Packレベル確認用レジストリ・エントリ | |
| .NET Framework 1.0ランタイムがインストール済みであれば、上記の2種類のキーのうち、どちらかが存在するはずだ。「Version」値に格納されている文字列の最後の1桁から、そのService Packレベルが確認できる。 | |
■.NET Framework 1.1/2.0/3.0/3.5の場合
これらのバージョンの.NET Frameworkは、バージョンごとに確認すべきレジストリ・キーが分かれている。一方、インストールされているかどうか、またService Packレベルを確認する手順は共通である。
| 項目 | 内容 |
| .NET Framework 1.1用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322 |
| .NET Framework 2.0用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727 |
| .NET Framework 3.0用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0 |
| .NET Framework 3.5用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 |
| 値の名前 | Install |
| 値の内容 | 0または存在しない→ランタイムがインストールされていない 1→ランタイムがインストール済み |
| 値の名前 | SP |
| 値の内容 | 0→ランタイムにService Packが未適用(初期版) 1→ランタイムにService Pack 1適用済み 2→ランタイムにService Pack 2適用済み …… |
| .NET Framework 1.1/2.0/3.0/3.5の各ランタイムのインストールおよびService Packレベル確認用レジストリ・エントリ | |
| バージョンごとに確認用キーは分かれている。「Install」値や「SP」値の内容とその確認方法については各バージョン共通だ。 | |
■.NET Framework 4の場合
.NET Framework 4のインストーラには「クライアント・プロファイル(Client Profile)」と「フル(Full)」の2種類が存在する。前者はクライアントPC向けでASP.NETなどが省かれており、後者は全機能を搭載している(当然、フル版はクライアント・プロファイル版を含んでいる)。両方とも、レジストリ・エントリこそ異なるものの、インストールの有無を確認する手順は前述の.NET Framework 1.1〜3.5の場合と同じである。
| 項目 | 内容 |
| クライアント・プロファイル用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\ NDP\v4\Client |
| フル用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\ NDP\v4\Full |
| 値の名前 | Install |
| 値の内容 | 0または存在しない→ランタイムがインストールされていない 1→ランタイムがインストール済み |
| .NET Framework 4の各ランタイムのインストール確認用レジストリ・エントリ | |
| 「クライアント・プロファイル」と「フル」という2種類のランタイムをそれぞれ検出できる。ただし、フル版はクライアント・プロファイル版を含んでいるため、フル版をインストールすると上表のFullキーだけではなくClientキーも作成される。 | |
なお、2010年4月時点で.NET Framework 4のService Packはまだリリースされていないため、Service Packレベルの検出方法は不明である。
日本語Language Packがインストールされているかどうかを確認する
.NET Framework 1.1/2.0/3.0/3.5の場合、ランタイムをインストールしただけではエラーメッセージなどが英語で表示される(.NET Framework 1.0はランタイム自体が日本語化されていて、こうした現象は発生しない)。メッセージを日本語化するには、バージョンごとに「日本語Language Pack」という専用のパッケージをインストールする必要がある。そのため、この日本語Language Packについても、インストールされているかどうか確認した方がよい。
.NET Framework 2.0/3.0/3.5では、ランタイムのService Packレベルを上げた場合、同じService Packレベルの日本語Language Packをインストールする必要がある。そのため、例えばランタイムに最新のService Pack適用後、日本語Language Packの更新を忘れたりすると、ランタイムと日本語Language Packの間でService Packレベルが食い違う、という事態が生じる。従ってこれらのバージョンでは、日本語Language PackのService Packレベルも確認した方がよい。
| 項目 | 内容 |
| .NET Framework 1.1用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\ NDP\v1.1.4322\1041 |
| .NET Framework 2.0用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\ NDP\v2.0.50727\1041 |
| .NET Framework 3.0用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\ NDP\v3.0\1041 |
| .NET Framework 3.5用キー | HKLM\SOFTWARE\Microsoft\NET Framework Setup\ NDP\v3.5\1041 |
| 値の名前 | Install |
| 値の内容 | 0または存在しない→日本語Language Packがインストールされていない 1→日本語Language Packがインストール済み |
| 値の名前 | SP |
| 値の内容 | 0→初期版用の日本語Language Packがインストール済み 1→Service Pack 1用の日本語Language Packがインストール済み 2→Service Pack 2用の日本語Language Packがインストール済み …… |
| .NET Framework 1.1/2.0/3.0/3.5の日本語Language Pack確認用レジストリ・エントリ | |
| 「Install」値でインストールされているかどうかを確認する。.NET Framework 2.0/3.0/3.5では、「SP」値で日本語Language PackのService Packレベルをそれぞれ確認する必要もある。 | |
.NET Framework 4については、2010年4月時点で日本語Language Packが提供されておらず、検出方法が確認できないため上表には記していない。提供が始まったら検出方法を追記する予定だ。
.NET Frameworkのバージョンをバッチ・コマンドで確認する
上記のレジストリ・エントリをいちいち手動で確認するのは手間がかかる。そこで、レジストリを自動的に参照して.NET Frameworkのバージョンを検出・表示するバッチ・ファイルを用意した。
なお、Windows 2000でこのバッチ・ファイルを実行する場合は、あらかじめTIPS「コマンド・プロンプトでレジストリを操作する」を参照してreg.exeコマンドを実行可能にしておいていただきたい。
このZIPファイルを展開して、checkvdnfw.cmdというファイルを書き込み可能なフォルダに保存する(一時ファイルを作成するため)。管理者アカウントでログオンしていることを確認してから、引数なしでcheckvdnfw.cmdを実行すると、実行したコンピュータに組み込まれている.NET Frameworkのバージョンが表示される。未インストールの.NET Frameworkのバージョンは表示されない。
また引数に「\\<コンピュータ名>」を指定すると、リモートからそのコンピュータの.NET Frameworkのバージョンを調査して表示できる。ただし、checkvdnfw.cmdを実行するコンピュータから、対象のリモート・コンピュータのRemote Registryサービスに接続できる必要がある(TIPS「リモートからレジストリを操作する」参照)。![]()
|
|
| checkvdnfw.cmdの実行例 | |
| リモート・コンピュータを調査した例。インストール済みの.NET FrameworkランタイムのバージョンおよびService Packレベル、日本語Language Packの情報が表示される。 |
| 更新履歴 |
| 【2004/09/18】.NET Framework 1.1および最新Service Pack情報などを追加し、これに併せて本文を改訂しました。 |
| 【2007/06/01】.NET Framework 2.0および3.0に関する情報を追加し、本文を改訂しました。 |
| 【2009/02/13】.NET Framework 3.5など最新情報を追加しました。またバージョン確認方法をレジストリ参照に統一し、本文を大幅に改訂しました。 |
| 【2010/04/23】.NET Framework 4およびWindows 7/Windows Server 2008 R2の情報を反映しました。 |
| 「Windows TIPS」 |
- アプリケーションの互換性 (2010/7/29)
64bitアプリでは大量のメモリを扱えるが、DOSやWin16アプリは実行できないし、32bit DLLも呼び出せない。そしてIEが2種類あるわけは? - 最強のサルベージ・ツールWindows PE 3.0(前) (2010/7/28)
起動しなくなったPCからファイルを救い出したい! そんなときに役立つWindows PE 3.0のリカバリ用起動メディアを作る手順を解説する - 第230話 疑惑の電話 (2010/7/27)
「じゃあおまえ、どうしてこんな時間にガイシャに電話をしたんだ」「いえ、そ、それは違うんです…」「ネタはあがってんだ、観念せいっ!」 - Windows TIPS (2010/7/23)
− IE8でタブを操作するためのショートカット・キー
− subinaclコマンドでオブジェクトの所有者などを変更する
− EasyBCDでWindowsのブート情報をGUIで編集する
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報










