[解決済み】インストールされている.NET Frameworkのバージョンとサービスパックを検出するにはどうすればよいですか?
質問
同様の質問をされた こちら しかし、それは.NET 3.5に特化したものでした。具体的には、次のようなものを探しています。
- インストールされている .NET Framework のバージョンとサービスパックを判断する正しい方法は何ですか?
- 使用できるレジストリキーの一覧はありますか?
- Frameworkのバージョン間の依存関係はありますか?
解決方法は?
レジストリは 正式な方法 を使用して、特定のバージョンのフレームワークがインストールされているかどうかを検出します。
どのレジストリキーが必要かは、探しているFrameworkのバージョンによって変化します。
フレームワークのバージョン レジストリキー ------------------------------------------------------------------------------------------ HKLMSoftwareMicrosoft.NETFrameworkPolicyv1.0Microsoft.NETFrameworkPolicyv1.0
(英語) 1.1 HKLM/SoftwareMicrosoft.NET Framework SetupNDPv1.1.4322Install 2.0 HKLMSoftware.NET Framework SetupNDPv2.0.50727 3.0 HKLM/SoftwareMicrosoftNET Framework SetupNDPv3.0 3.5 HKLMSoftwareMicrosoft.NET Framework SetupNDPv3.5 Install 4.0 Client Profile HKLMSoftware ◇MicrosoftNET Framework Setup ◇NDPv4 ◇Client ◇Install 4.0 Full Profile HKLMSoftwareMicrosoftNET Framework SetupNDPv4FullInstall
一般的にお探しのものです。
"Install"=dword:00000001
ただし、.NET 1.0では、値は文字列(
REG_SZ
)ではなく、数値(
REG_DWORD
).
サービスパックレベルの決定も同様のパターンで行われます。
フレームワークバージョンレジストリキー ------------------------------------------------------------------------------------------ 1.0 HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version 1.0[1] HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version 1.1 HKLMSoftwareMicrosoft³³NET Framework Setup³³NDPv1.1.4322 2.0 HKLMSoftwareMicrosoftNET Framework SetupNDPv2.0.50727 3.0 HKLMSoftware ⇄ Microsoft NET Framework SetupNDPv3.0 3.5 HKLMSoftwareMicrosoft.NET Framework Setup UNDPv3.5 4.0 Client Profile HKLMSoftware ⇄MicrosoftNET Framework Setup ⇄Client Services 4.0 Full Profile HKLMSoftwareMicrosoftNET Framework Setup ╱NDPv4FullServicing [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では、これらのキーの文字列値は、#,#,####,#のようなフォーマットになっています。最後の#は、サービスパックレベルです。
私はこれを明確に尋ねませんでしたが、もしあなたがFrameworkの正確なバージョン番号を知りたければ、これらのレジストリキーを使用するでしょう。
フレームワークバージョンレジストリキー ------------------------------------------------------------------------------------------ 1.0 HKLM\Software\Microsoft\Active Setup\Installed Components\{78705f0d-e8db-4b2d-8193-982bdda15ecd}\Version 1.0[1] HKLM\Software\Microsoft\Active Setup\Installed Components\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}\Version 1.1 HKLMSoftwareMicrosoftFramework SetupNDPv1.1.4322 2.0[2] HKLM/SoftwareMicrosoft.NET Framework SetupNDPv2.0.50727のバージョン 2.0[3] HKLMSoftwareMicrosoftNET Framework Setup 3.0 HKLMSoftwareMicrosoft.NET Framework SetupNDPv3.0 3.5 HKLMSoftwareMicrosoft.NET Framework SetupNDPv3.5ここでも、.NET 1.0は文字列の値を使用し、他のすべてはDWORDを使用しています。
その他の注意事項
-
.NET 1.0では、これらのキーの文字列値は
#,#,####,#
. その#,#,####
の部分がFrameworkのバージョンになります。 -
.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がインストールされている場合は、レジストリに.NET 4.5キーがあります。その代わりに
HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
という値がキーに含まれています。
Release
. この値がある場合、.NET 4.5がインストールされ、ない場合はインストールされません。 詳細はこちら
これ
と
これ
.
関連
-
[解決済み】警告。同じ依存アセンブリの異なるバージョン間で競合が見つかりました。
-
[解決済み] SQL Server Compact EditionデータベースのLINQ to SQLで、"Row not found or changed "例外を解決するにはどうすればよいですか?
-
[解決済み] LINQ to Entitiesはメソッドを認識しません。
-
[解決済み] LINQ: フィルタリング基準で SingleOrDefault と FirstOrDefault() を使用する場合
-
[解決済み] "SSL/TLSセキュアチャネルの信頼関係を当局と確立できませんでした "の解決方法
-
[解決済み] パッケージのダウングレード警告を検出(dotnet core, vs 2017)
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] .NET Coreと.NET Standard Class Libraryのプロジェクトタイプの違いは何ですか?
-
[解決済み] AssemblyVersion、AssemblyFileVersion、AssemblyInformationalVersionの違いは何ですか?
-
[解決済み] PowerShellで文字列がNULLまたは空であるかどうかを確認するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Microsoft.Practices.ServiceLocationはどこから来たのですか?
-
[解決済み] BasicHttpsBindingとWsHttpBinding with Transport securityの違いは何ですか?
-
[解決済み] AndroidでWCFサービスを利用する方法
-
[解決済み] ネットワークの位置からアセンブリをロードすることはできません
-
[解決済み] Nuget接続の試行に失敗しました。"Unable to load service index for source"。
-
[解決済み] 権限 '*' を持つ SSL/TLS の安全なチャネルを確立できませんでした。
-
[解決済み] Powershell v3 Invoke-WebRequest HTTPSエラー
-
[解決済み] プライベートメソッドのユニットテストはどのように行うのですか?
-
[解決済み] Math.Round(2.5)はなぜ3でなく2を返すのですか?
-
[解決済み】.NETのバージョンを調べるにはどうしたらいいですか?