294

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

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

13 に答える 13

370

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

ここに画像の説明を入力

必要なレジストリ キーは、探しているフレームワークのバージョンによって異なります。

フレームワーク バージョン レジストリ キー
-------------------------------------------------- --------------------------------------------
1.0 HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322\Install
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Install
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup\InstallSuccess
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Install
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

REG_SZ値が数値 ( ) ではなく文字列 ( ) である .NET 1.0 を除きます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 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 の場合、これらのキーのいずれかの文字列値は、#、#、####、# の形式になります。最後の # はサービス パックのレベルです。

私はこれを明示的に求めていませんでしたが、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 HKLM\Software\Microsoft\NET Framework セットアップ\NDP\v1.1.4322
2.0[2] HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Version
2.0[3] HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727\Increment
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Version
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\Version
4.0 クライアント プロファイル HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Version
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 2.0 と .NET 3.0 の両方がインストール済みとして評価され、.NET 3.0 がインストールされていることを正しく示す必要があります。同様に、.NET 3.5 は .NET 2.0 および .NET 3.0 に追加機能を追加するため、.NET 2.0、.NET 3.0、および .NET 3. はすべて、.NET 3.5 がインストールされていることを正しく示すために、インストールされていると評価する必要があります。

  • .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 がインストールされています。それ以外の場合はインストールされていません。詳細については、こちらこちらをご覧ください。

于 2008-10-14T02:04:20.587 に答える
18

この質問に対するマイクロソフトの公式回答は、次のナレッジ ベース記事にあります。

文書番号: 318785 - 最終更新日: 2008 年 11 月 7 日 - リビジョン: 20.1 インストールされている .NET Framework のバージョンとサービス パックが適用されているかどうかを確認する方法

残念ながら、2.0 ディレクトリの mscorlib.dll バージョンには 2.0 バージョンがあり、3.5 SP1 がインストールされているにもかかわらず、3.0 または 3.5 ディレクトリのいずれにも mscorlib.dll バージョンがないため、動作していないようです...なぜ公式のマイクロソフトの回答はそれほど誤解されているでしょうか?

于 2010-06-21T17:57:44.140 に答える
17

Framework 4 ベータ版は、別のレジストリ キーにインストールされます。

using System;
using System.Collections.ObjectModel;
using Microsoft.Win32;

class Program
{
    static void Main(string[] args)
    {
        foreach(Version ver in InstalledDotNetVersions())
            Console.WriteLine(ver);

        Console.ReadKey();
    }


    public static Collection<Version> InstalledDotNetVersions()
    {
        Collection<Version> versions = new Collection<Version>();
        RegistryKey NDPKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
        if (NDPKey != null)
        {
            string[] subkeys = NDPKey.GetSubKeyNames();
            foreach (string subkey in subkeys)
            {
                GetDotNetVersion(NDPKey.OpenSubKey(subkey), subkey, versions);
                GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Client"), subkey, versions);
                GetDotNetVersion(NDPKey.OpenSubKey(subkey).OpenSubKey("Full"), subkey, versions);
            }
        }
        return versions;
    }

    private static void GetDotNetVersion(RegistryKey parentKey, string subVersionName, Collection<Version> versions)
    {
        if (parentKey != null)
        {
            string installed = Convert.ToString(parentKey.GetValue("Install"));
            if (installed == "1")
            {
                string version = Convert.ToString(parentKey.GetValue("Version"));
                if (string.IsNullOrEmpty(version))
                {
                    if (subVersionName.StartsWith("v"))
                        version = subVersionName.Substring(1);
                    else
                        version = subVersionName;
                }

                Version ver = new Version(version);

                if (!versions.Contains(ver))
                    versions.Add(ver);
            }
        }
    }
}
于 2010-03-16T00:28:13.690 に答える
8

システムにインストールされている .NET バージョン 4.5.2 の存在を検出したかったのですが、ASoft .NET Version Detectorよりも優れたソリューションが見つかりませんでした。

さまざまな .NET バージョンを示すこのツールのスナップショット:

さまざまな .NET バージョンを示すこのツールのスナップショット

于 2015-04-27T09:12:50.143 に答える
7

のサブキーを列挙しますHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP。各サブキーは.NETバージョンです。マシン上に存在する場合はInstall=1値、サービス パックを示す SP 値、およびMSI=1MSI を使用してインストールされた場合は値が必要です。(たとえば、Windows Vista の .NET 2.0 には、OS の一部であるため、最後の 1 つがありません。)

于 2008-10-13T21:37:41.170 に答える
5

64ビットOSの場合、パスは次のようになります。

HKEY_LOCAL_MACHINE\SOFTWARE\wow6432Node\Microsoft\NET Framework Setup\NDP\
于 2010-05-11T13:04:14.583 に答える
5

.NET 4.5.1 の更新

.NET 4.5.1 が利用可能になったので、レジストリ内の Release という名前のキーの実際の値を、その存在だけでなく確認する必要があります。378758 の値は、.NET Framework 4.5.1 がインストールされていることを意味します。ただし、こちらで説明されているように、この値は Windows 8.1 では 378675 です。

于 2013-12-12T09:44:37.660 に答える
5

ASoft .NET Version Detectorという GUI ツールが利用可能で、これは常に高い信頼性が証明されています。コマンド ラインで XML 出力のファイル名を指定することにより、XML ファイルを作成できます。

これを自動化に使用できます。これは、.NET に依存しない言語で記述された小さなプログラムであり、インストールは必要ありません。

于 2013-12-12T21:12:48.553 に答える
4

自分のコンピュータにインストールされている .NET フレームワークのバージョンを確認する必要があり、コントロール パネルに移動して [プログラムのアンインストール] オプションを選択するだけでした。その後、プログラムを名前順に並べ替えたところ、Microsoft .NET Framework 4 Client Profile が見つかりました。

于 2012-04-20T07:44:13.237 に答える
2

SignumFrameworkのSignum.Utilitiesライブラリ(スタンドアロンで使用できます)を使用すると、レジストリを自分で処理しなくても、適切に取得できます。

AboutTools.FrameworkVersions().ToConsole();
//Writes in my machine:
//v2.0.50727 SP2
//v3.0 SP2
//v3.5 SP1
于 2009-03-13T19:31:12.457 に答える
1

「方法: インストールされている .NET Framework のバージョンを確認する(MSDN) 」を参照してください。

MSDN は、バージョン 1 ~ 4 で機能すると思われる関数の例を 1 つ提案しています。記事によると、メソッドの出力は次のとおりです。

v2.0.50727  2.0.50727.4016  SP2
v3.0  3.0.30729.4037  SP2
v3.5  3.5.30729.01  SP1
v4
  Client  4.0.30319
  Full  4.0.30319

「バージョン 4.5 以降」の場合、別の機能があることに注意してください。

于 2013-10-24T08:10:37.347 に答える
1

Windows 7 の場合 (Windows 8 でも動作するはずですが、テストしていません):

コマンドプロンプトに移動

コマンド プロンプトに移動する手順:

  1. スタートメニューをクリック
  2. 検索ボックスに「cmd」と入力します (引用符なし)。
  3. cmd.exe を開く

cmd で、このコマンドを入力します

wmic /namespace:\\root\cimv2 path win32_product where "name like '%%.NET%%'" get version

これにより、最新バージョンの NET Framework がインストールされます。

同じためにRaymond.cc Utiltiesを試すこともできます。

于 2014-04-28T19:48:00.747 に答える