インストールされている .NET Framework のバージョンとサービス パックを検出するにはどうすればよいでしょうか? 質問する

インストールされている .NET Framework のバージョンとサービス パックを検出するにはどうすればよいでしょうか? 質問する

同様の質問がありましたここただし、これは .NET 3.5 に固有のものです。具体的には、次のものを探しています。

  1. インストールされている .NET Framework のバージョンとサービス パックを確認する正しい方法は何ですか?
  2. 使用できるレジストリ キーのリストはありますか?
  3. フレームワークのバージョン間に依存関係はありますか?

ベストアンサー1

レジストリは正式な方法特定のバージョンのフレームワークがインストールされているかどうかを検出します。

ここに画像の説明を入力してください

必要なレジストリ キーは、探している Framework のバージョンに応じて変わります。

フレームワーク バージョン レジストリ キー
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\.NETFramework\ポリシー\v1.0\3705
1.1 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v1.1.4322\インストール
2.0 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v2.0.50727\インストール
3.0 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v3.0\Setup\インストール成功
3.5 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v3.5\インストール
4.0 クライアント プロファイル HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Install
4.0 フル プロファイル HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Install

一般的に探しているのは次のものです:

"Install"=dword:00000001

ただし、.NET 1.0 では、値はREG_SZ数値 ( ) ではなく文字列 ( ) になりますREG_DWORD

サービス パック レベルの決定も同様のパターンに従います。

フレームワーク バージョン レジストリ キー
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\Active Setup\インストールされたコンポーネント\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\バージョン
1.0[1] HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\バージョン
1.1 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v1.1.4322\SP
2.0 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v2.0.50727\SP
3.0 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v3.0\SP
3.5 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v3.5\SP
4.0 クライアント プロファイル HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client\Servicing
4.0 フル プロファイル HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full\Servicing

[1] Windows Media CenterまたはWindows XP Tablet Edition

ご覧のとおり、Windows Media Center または Windows XP Tablet Edition で実行している場合、.NET 1.0 の SP レベルの決定方法が変わります。繰り返しになりますが、.NET 1.0 では文字列値が使用されますが、その他はすべて DWORD を使用します。

.NET 1.0 の場合、これらのキーのいずれかの文字列値の形式は #,#,####,# です。最後の # はサービス パックのレベルです。

明示的に要求したわけではありませんが、フレームワークの正確なバージョン番号を知りたい場合は、次のレジストリ キーを使用します。

フレームワーク バージョン レジストリ キー
------------------------------------------------------------------------------------------
1.0 HKLM\Software\Microsoft\Active Setup\インストールされたコンポーネント\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\バージョン
1.0[1] HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\バージョン
1.1 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v1.1.4322
2.0[2] HKLM\Software\Microsoft\NET Frameworkセットアップ\NDP\v2.0.50727\バージョン
2.0[3] HKLM\Software\Microsoft\NET Frameworkセットアップ\NDP\v2.0.50727\Increment
3.0 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v3.0\バージョン
3.5 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v3.5\バージョン
4.0 クライアント プロファイル HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v4\バージョン
4.0 フル プロファイル HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version

[1] Windows Media CenterまたはWindows XP Tablet Edition
[2] .NET 2.0 SP1
[3] .NET 2.0 オリジナルリリース (RTM)

繰り返しになりますが、.NET 1.0 では文字列値が使用されますが、その他はすべて DWORD を使用します。

その他の注意事項

  • .NET 1.0 の場合、これらのキーのいずれかの文字列値の形式は です#,#,####,##,#,####文字列の部分はフレームワークのバージョンです。

  • .NET 1.1 の場合、バージョン番号を表すレジストリ キー自体の名前を使用します。

  • 最後に、依存関係を見ると、.NET 3.0 は .NET 2.0 に追加機能を追加するため、.NET 3.0 がインストールされていると正しく判断するには、.NET 2.0 と .NET 3.0 の両方がインストールされていると評価される必要があります。同様に、.NET 3.5 は .NET 2.0 と .NET 3.0 に追加機能を追加するため、.NET 3.5 がインストールされていると正しく判断するには、.NET 2.0、.NET 3.0、.NET 3 のすべてがインストールされていると評価される必要があります。

  • .NET 4.0 では、CLR 2.0 と並行して実行できる CLR の新しいバージョン (CLR バージョン 4.0) がインストールされます。

.NET 4.5 のアップデート

v4.5.NET 4.5 がインストールされている場合は、レジストリにキーはありません。代わりにHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full、キーに という値が含まれているかどうかを確認する必要がありますRelease。この値が存在する場合は .NET 4.5 がインストールされており、存在しない場合はインストールされていません。詳細については、ここそしてここ

おすすめ記事