スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷
Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

.NET Frameworkのバージョンを確認する方法

解説をスキップして操作方法を読む

デジタルアドバンテージ 島田 広道
2002/10/29
2004/09/18 更新
2007/06/01 更新
2009/02/13 更新
2010/04/23 更新
対象OS
Windows 2000
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
Windows 7
Windows Server 2008 R2
Visual Studioなどで開発した.NETアプリケーションを実行するには、Windows環境に.NET Frameworkランタイムが必要である。
しかし.NET Frameworkランタイムは、Windows OSによってはデフォルトで組み込まれておらず、明示的にインストールしなければならない場合がある。
.NET対応プログラムを展開するには、対象コンピュータにランタイムがインストールされているかどうか、またどのService Packまで適用されているかを確認する必要がある。それには特定のレジストリ・エントリを参照すればよい。

  解説

 .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アプリケーションを展開するには、それ以前に、対象コンピュータに.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レベル

OS別の.NET Frameworkのインストール状況
Windows OS名と、インストール可能な.NET Frameworkのバージョンの関係。ただし「OSに付属」とされているバージョンの.NET Frameworkが実際にプレインストールされているかどうかは、インストール時の設定などに依存する。
*1: Windows XP Tablet PC/Media Centerには.NET Framework 1.0が付属している。Professional/Homeの各エディションには付属していない。
*2: Server Core構成のWindows Server 2008 R2の場合、.NET Framework 3.5はサブセット版であり、Windows Presentation Foundation(WPF)が利用できない。

 .NETアプリケーションを展開するときには、対象コンピュータに.NET Frameworkがインストールされているかどうかだけでなく、.NET Frameworkのバージョンと適用済みService Packレベルを確認する必要がある。本稿では、その方法を解説する。

 .NET Frameworkのインストール手順については以下の記事を参照していただきたい。

  操作方法

.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「リモートからレジストリを操作する」参照)。End of Article

C:\Temp> checkvdnfw.cmd \\UserPC01
----- \\UserPC01 -----
.NET Framework 1.0 Service Pack 3 がインストール済みです
.NET Framework 1.1 Service Pack 1 がインストール済みです
 日本語Language Pack(初期版)がインストール済みです
.NET Framework 2.0 Service Pack 2 がインストール済みです
 日本語Language Pack(Service Pack 2)がインストール済みです
.NET Framework 3.0 Service Pack 2 がインストール済みです
 日本語Language Pack(Service Pack 2)がインストール済みです
.NET Framework 3.5 Service Pack 1 がインストール済みです
 日本語Language Pack(Service Pack 1)がインストール済みです
.NET Framework 4 (フル版)がインストール済みです
checkvdnfw.cmdの実行例
リモート・コンピュータを調査した例。インストール済みの.NET FrameworkランタイムのバージョンおよびService Packレベル、日本語Language Packの情報が表示される。

この記事と関連性の高い別のWindows TIPS
.NET Frameworkのバージョンを整理する
Windows Updateによる.NET Framework 3.5 SP1のインストールをブロックする
Internet Explorerのバージョンを確認する方法
Service Packのインストール・ログを記録/確認する
Windows 2000のインストールとService Packの適用を一度に行う方法
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

更新履歴
【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」
Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
@IT Sepcial
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Sepcial
ソリューションFLASH