1. ホーム
  2. .net

[解決済み】インストールされている.NET Frameworkのバージョンとサービスパックを検出するにはどうすればよいですか?

2022-03-30 15:57:22

質問

同様の質問をされた こちら しかし、それは.NET 3.5に特化したものでした。具体的には、次のようなものを探しています。

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

解決方法は?

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

どのレジストリキーが必要かは、探しているFrameworkのバージョンによって変化します。

フレームワークのバージョン レジストリキー
------------------------------------------------------------------------------------------
HKLMSoftwareMicrosoft.NETFrameworkPolicyv1.0

Microsoft.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がインストールされ、ない場合はインストールされません。 詳細はこちら これ これ .