方法: インストールされている .NET Framework バージョンを確認するHow to: Determine which .NET Framework versions are installed

ユーザーはコンピューターに複数のバージョンの .NET Framework をインストールして実行できます。Users can install and run multiple versions of the .NET Framework on their computers. アプリを開発または配置する場合、どのバージョンの .NET Framework がユーザーのコンピューターにインストールされているかを確認しなければならない場合があります。When you develop or deploy your app, you might need to know which .NET Framework versions are installed on the user’s computer.

.NET Framework は、個別にバージョン管理される 2 つの主要コンポーネントで構成されています。The .NET Framework consists of two main components, which are versioned separately:

  • アプリに機能を提供する型やリソースのコレクションである一連のアセンブリ。A set of assemblies, which are collections of types and resources that provide the functionality for your apps. .NET Framework とアセンブリは同じバージョン番号を共有します。The .NET Framework and assemblies share the same version number.

  • アプリのコードを管理および実行する共通言語ランタイム (CLR)。The common language runtime (CLR), which manages and executes your app's code. CLR は独自のバージョン番号で識別されます (「バージョンおよび依存関係」を参照してください)。The CLR is identified by its own version number (see Versions and Dependencies).

注意

新しい各バージョンの .NET Framework には、1 つ前のバージョンの機能が含まれると共に、新機能が追加されています。Each new version of the .NET Framework retains features from the previous versions and adds new features. 同じコンピューターに .NET Framework の複数のバージョンを同時に読み込むことができます。これは、以前のバージョンをアンインストールせずに、.NET Framework をインストールできることを意味します。You can load multiple versions of the .NET Framework on a single computer at the same time, which means that you can install the .NET Framework without having to uninstall previous versions. 一般に、以前の .NET Framework のバージョンはアンインストールしないでください。使用するアプリケーションが特定のバージョンに依存しており、そのバージョンが削除されると破損してしまう可能性があります。In general, you shouldn't uninstall previous versions of the .NET Framework, because an application you use may depend on a specific version and may break if that version is removed.

.NET Framework のバージョンと CLR のバージョンの間には違いがあります。There is a difference between the .NET Framework version and the CLR version:

  • .NET Framework は、.NET Framework のクラス ライブラリを構成するアセンブリのセットに基づいてバージョン管理されています。The .NET Framework version is based on the set of assemblies that form the .NET Framework class library. たとえば、.NET Framework のバージョンには、4.5、4.6.1、および 4.7.2 が含まれます。For example, .NET Framework versions include 4.5, 4.6.1, and 4.7.2.
  • CLR は、.NET Framework アプリケーションが実行されているランタイムに基づいてバージョン管理されています。The CLR version is based on the runtime on which .NET Framework applications execute. 1 つの CLR バージョンは、通常複数の NET Framework バージョンをサポートしています。A single CLR version typically supports multiple .NET Framework versions. たとえば、CLR バージョン 4.0.30319.xxxxx (ここでの xxxxx は 42000 より小さい) は .NET Framework バージョン 4 から 4.5.2 をサポートしており、CLR バージョン 4.0.30319.42000 では .NET Framework 4.6 以降をサポートします。For example, CLR version 4.0.30319.xxxxx supports .NET Framework versions 4 through 4.5.2, where xxxxx is less than 42000, and CLR version 4.0.30319.42000 supports .NET Framework versions starting with .NET Framework 4.6.

バージョンの詳細については、「.NET Framework のバージョンおよび依存関係」を参照してください。For more information about versions, see .NET Framework versions and dependencies.

コンピューターにインストールされている .NET Framework のバージョンの一覧を取得するには、レジストリにアクセスします。To get a list of the .NET Framework versions installed on a computer, you access the registry. レジストリを確認するには、レジストリ エディタを使用するか、次に従ってコードで照会します。You can either use the Registry Editor to view the registry or use code to query it:

コンピューターにインストールされている CLR のバージョンの一覧を取得するには、次のツールまたはコードを使用します。To get a list of the CLR versions installed on a computer, use a tool or code:

.NET Framework の各バージョン用にインストールされている更新プログラムの検出については、「方法:インストールされている .NET Framework の更新プログラムを確認する」を参照してください。For information about detecting the installed updates for each version of the .NET Framework, see How to: Determine which .NET Framework updates are installed.

.NET Framework の新しいバージョンを探す (4.5 以降)Find newer .NET Framework versions (4.5 and later)

レジストリで .NET Framework バージョン 4.5 以降を探すFind .NET Framework versions 4.5 and later in the registry

  1. スタート メニューの [ファイル名を指定して実行] を選択し、「regedit」と入力し、 [OK] を選択します。From the Start menu, choose Run, enter regedit, and then select OK.

    regedit を実行するには、管理特権が必要です。You must have administrative credentials to run regedit.

  2. レジストリ エディターで、次のサブキーを開きます。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\FullIn the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Full サブキーが存在しない場合は、.NET Framework 4.5 以降はインストールされていません。If the Full subkey isn't present, then you don't have the .NET Framework 4.5 or later installed.

    注意

    レジストリの NET Framework セットアップ フォルダーの先頭はピリオドでは "ありません"。The NET Framework Setup folder in the registry does not begin with a period.

  3. Release という DWORD のエントリを探します。Check for a DWORD entry named Release. それがある場合、.NET Framework 4.5 以降のバージョンがインストールされています。If it exists, then you have .NET Framework 4.5 or later versions installed. その値は、.NET Framework の特定のバージョンのリリース キーです。Its value is a release key that corresponds to a particular version of the .NET Framework. たとえば、次の図では、Release エントリの値は 378389 で、これは .NET Framework 4.5 のリリース キーです。In the following figure, for example, the value of the Release entry is 378389, which is the release key for .NET Framework 4.5.

    .NET Framework 4.5 のレジストリ エントリRegistry entry for the .NET Framework 4.5

次の表は、.NET Framework 4.5 以降のバージョンに対する個々のオペレーティング システムでの Release DWORD 値の一覧です。The following table lists the value of the Release DWORD on individual operating systems for .NET Framework 4.5 and later versions.

重要

次の表では、.NET Framework のリリース バージョンのみのキーの一覧を示します。The following table lists the keys of released versions of the .NET Framework only. プレビュー バージョンまたはプレリリース バージョンのキーは示されていません。It doesn't list the keys of preview or pre-release versions.

.NET Framework のバージョン.NET Framework version Release DWORD の値Value of the Release DWORD
.NET Framework 4.5.NET Framework 4.5 すべての Windows オペレーティング システム:378389All Windows operating systems: 378389
.NET Framework 4.5.1.NET Framework 4.5.1 Windows 8.1 および Windows Server 2012 R2:378675On Windows 8.1 and Windows Server 2012 R2: 378675
他のすべての Windows オペレーティング システム:378758On all other Windows operating systems: 378758
.NET Framework 4.5.2.NET Framework 4.5.2 すべての Windows オペレーティング システム:379893All Windows operating systems: 379893
.NET Framework 4.6.NET Framework 4.6 Windows 10:393295On Windows 10: 393295
他のすべての Windows オペレーティング システム:393297On all other Windows operating systems: 393297
.NET Framework 4.6.1.NET Framework 4.6.1 Windows 10 November Update システム:394254On Windows 10 November Update systems: 394254
他のすべての Windows オペレーティング システム (Windows 10 を含む):394271On all other Windows operating systems (including Windows 10): 394271
.NET Framework 4.6.2.NET Framework 4.6.2 Windows 10 Anniversary Update および Windows Server 2016 の場合:394802On Windows 10 Anniversary Update and Windows Server 2016: 394802
他のすべての Windows オペレーティング システム (他の Windows 10 オペレーティング システムを含む):394806On all other Windows operating systems (including other Windows 10 operating systems): 394806
.NET Framework 4.7.NET Framework 4.7 Windows 10 Creators Update:460798On Windows 10 Creators Update: 460798
他のすべての Windows オペレーティング システム (他の Windows 10 オペレーティング システムを含む):460805On all other Windows operating systems (including other Windows 10 operating systems): 460805
.NET Framework 4.7.1.NET Framework 4.7.1 Windows 10 Fall Creators Update および Windows Server バージョン 1709:461308On Windows 10 Fall Creators Update and Windows Server, version 1709: 461308
他のすべての Windows オペレーティング システム (他の Windows 10 オペレーティング システムを含む):461310On all other Windows operating systems (including other Windows 10 operating systems): 461310
.NET Framework 4.7.2.NET Framework 4.7.2 Windows 10 April 2018 Update および Windows Server バージョン 1803:461808On Windows 10 April 2018 Update and Windows Server, version 1803: 461808
Windows 10 April 2018 Update および Windows Server バージョン 1803 以外のすべての Windows オペレーティング システム:461814On all Windows operating systems other than Windows 10 April 2018 Update and Windows Server, version 1803: 461814
.NET Framework 4.8.NET Framework 4.8 Windows 10 May 2019 Update: 528040On Windows 10 May 2019 Update: 528040
他のすべての Windows オペレーティング システム (他の Windows 10 オペレーティング システムを含む): 528049On all others Windows operating systems (including other Windows 10 operating systems): 528049

これらの値は次のように使用できます。You can use these values as follows:

  • 特定のバージョンの .NET Framework が特定のバージョンの Windows オペレーティング システムにインストールされているかどうかを判断するには、Release DWORD 値が表に記載されている値と "同じ" であることを確認します。To determine whether a specific version of the .NET Framework is installed on a particular version of the Windows operating system, test whether the Release DWORD value is equal to the value listed in the table. たとえば、.NET Framework 4.6 が Windows 10 システム上に存在するかどうかを判断するには、Release 値が 393295 と "同じ" であることを確認します。For example, to determine whether .NET Framework 4.6 is present on a Windows 10 system, test for the a Release value that is equal to 393295.

  • .NET Framework の最小バージョンが存在するかどうかを判断するには、そのバージョン用の小さい RELEASE DWORD 値を使用します。To determine whether a minimum version of the .NET Framework is present, use the smaller RELEASE DWORD value for that version. たとえば、アプリケーションが .NET Framework 4.6 以降のバージョンで実行されている場合、RELEASE DWORD 値が 393295 "以上" であることを確認します。For example, if your application runs under .NET Framework 4.6 or a later version, test for a RELEASE DWORD value that is greater than or equal to 393295. 各 .NET Framework バージョンの最小 RELEASE DWORD 値のみが記載された表については、「The minimum values of the Release DWORD for .NET Framework 4.5 and later versions (.NET Framework 4.5 以降のバージョン用の Release DWORD の最小値)」を参照してください。For a table that lists only the minimum RELEASE DWORD value for each .NET Framework version, see The minimum values of the Release DWORD for .NET Framework 4.5 and later versions.

  • 複数のバージョンを確認するには、まず、値が最新の .NET Framework バージョン用の小さい DWORD 値 "以上" であることを確認してから、その値と、それよりも以前のバージョン用の小さい DWORD 値を順番に比較します。To test for multiple versions, begin by testing for a value that is greater than or equal to the smaller DWORD value for the latest .NET Framework version, and then compare the value with the smaller DWORD value for each successive earlier version. たとえば、アプリケーションに .NET Framework 4.7 以降が必要で、存在する .NET Framework の特定のバージョンを確認する場合は、461808 (.NET Framework 4.7.2 用の小さい DWORD 値) "以上" の RELEASE DWORD 値であることの確認から始めます。For example, if your application requires .NET Framework 4.7 or later and you want to determine the specific version of .NET Framework present, start by testing for a RELEASE DWORD value that is great than or equal to to 461808 (the smaller DWORD value for .NET Framework 4.7.2). 次に、RELEASE DWORD 値と、以降の各 .NET Framework バージョン用の小さい値と比較します。Then compare the RELEASE DWORD value with the smaller value for each later .NET Framework version. 各 .NET Framework バージョンの最小 RELEASE DWORD 値のみが記載された表については、「The minimum values of the Release DWORD for .NET Framework 4.5 and later versions (.NET Framework 4.5 以降のバージョン用の Release DWORD の最小値)」を参照してください。For a table that lists only the minimum RELEASE DWORD value for each .NET Framework version, see The minimum values of the Release DWORD for .NET Framework 4.5 and later versions.

コードで .NET Framework バージョン 4.5 以降を探すFind .NET Framework versions 4.5 and later with code

  1. RegistryKey.OpenBaseKey メソッドと RegistryKey.OpenSubKey メソッドを使用し、Windows レジストリの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full サブキーにアクセスします。Use the RegistryKey.OpenBaseKey and RegistryKey.OpenSubKey methods to access the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey in the Windows registry.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full サブキーに Release DWORD があるということは、コンピューターに .NET Framework 4.5 以降のバージョンがインストールされていることを意味します。The existence of the Release DWORD entry in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey indicates that the .NET Framework 4.5 or a later version is installed on a computer.

  2. Release エントリの値を確認して、インストールされているバージョンを判断します。Check the value of the Release entry to determine the installed version. 上位互換性があるかを確認するには、.NET Framework のバージョンの表で示されている値以上の値があることを確認します。To be forward-compatible, check for a value greater than or equal to the value listed in the .NET Framework version table.

次の例では、レジストリから Release の値を確認し、インストールされている .NET Framework 4.5 以降のバージョンを探しています。The following example checks the value of the Release entry in the registry to find the .NET Framework 4.5 and later versions that are installed:

using System;
using Microsoft.Win32;

public class GetDotNetVersion
{
   public static void Main()
   {
      Get45PlusFromRegistry();
   }

   private static void Get45PlusFromRegistry()
   {
      const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

      using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey))
      {
        if (ndpKey != null && ndpKey.GetValue("Release") != null) {
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int) ndpKey.GetValue("Release"))}");
        }
         else {
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
         } 
      }
   
      // Checking the version using >= enables forward compatibility.
      string CheckFor45PlusVersion(int releaseKey)
      {
         if (releaseKey >= 528040)
            return "4.8 or later";
         if (releaseKey >= 461808)
            return "4.7.2";
         if (releaseKey >= 461308)
            return "4.7.1";
         if (releaseKey >= 460798)
            return "4.7";
         if (releaseKey >= 394802)
            return "4.6.2";
         if (releaseKey >= 394254)
            return "4.6.1";      
         if (releaseKey >= 393295)
            return "4.6";      
         if (releaseKey >= 379893)
            return "4.5.2";      
         if (releaseKey >= 378675)
            return "4.5.1";      
         if (releaseKey >= 378389)
            return "4.5";      
         // This code should never execute. A non-null release key should mean
         // that 4.5 or later is installed.
         return "No 4.5 or later version detected";
      }
   }
}   
// This example displays output like the following:
//       .NET Framework Version: 4.6.1
Imports Microsoft.Win32

Public Module GetDotNetVersion
   Public Sub Main()
      Get45PlusFromRegistry()
   End Sub

   Private Sub Get45PlusFromRegistry()
      Const subkey As String = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"

      Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(subkey)
         If ndpKey IsNot Nothing AndAlso ndpKey.GetValue("Release") IsNot Nothing 
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion(ndpKey.GetValue("Release"))}")
         Else 
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.")
         End If 
      End Using
   End Sub

   ' Checking the version using >= will enable forward compatibility.
   Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
      If releaseKey >= 528040 Then
         Return "4.8 or later"
      Else If releaseKey >= 461808 Then
         Return "4.7.2" 
      Else If releaseKey >= 461308 Then
         Return "4.7.1"
      Else If releaseKey >= 460798 Then
         Return "4.7"
      Else If releaseKey >= 394802 Then
         Return "4.6.2"
      Else If releaseKey >= 394254 Then 
         Return "4.6.1"
      Else If releaseKey >= 393295 Then
         Return "4.6"
      Else If releaseKey >= 379893 Then
         Return "4.5.2"
      Else If releaseKey >= 378675 Then
         Return "4.5.1"
      Else If releaseKey >= 378389 Then
         Return "4.5"
      End If
      ' This code should never execute. A non-null release key should mean
      ' that 4.5 or later is installed.
        Return "No 4.5 or later version detected"
   End Function
End Module   
' The example displays output like the following:
'       .NET Framework Version: 4.6.1

この例では、バージョンのチェックで推奨されている方法に従います。This example follows the recommended practice for version checking:

  • Release エントリの値が、既知のリリース キー値以上かどうかを確認しています。It checks whether the value of the Release entry is greater than or equal to the value of the known release keys.

  • 最新バージョンから最も古いバージョンの順にチェックします。It checks in order from most recent version to earliest version.

PowerShell を使用して最低限必要な .NET Framework のバージョン (4.5 以降) を確認するCheck for a minimum-required .NET Framework version (4.5 and later) with PowerShell

  • PowerShell コマンドを使用し、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full サブキーから Release エントリの値を確認します。Use PowerShell commands to check the value of the Release entry of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey.

次の例では、Release エントリの値を確認して、.NET Framework 4.6.2 以降がインストールされているかどうかを判断しています。The following examples check the value of the Release entry to determine whether the .NET Framework 4.6.2 or later is installed. このコードでは、インストールされていない場合は、True が返され、されている場合は False が返されます。This code returns True if it's installed and False otherwise.

# PowerShell 5
 Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' |  Get-ItemPropertyValue -Name Release | Foreach-Object { $_ -ge 394802 }
# PowerShell 4
(Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

さまざまな必要最低限の .NET Framework バージョンを確認するには、これらの例の 394802.NET Framework のバージョンの表Release 値と置き換えます。To check for a different minimum-required .NET Framework version, replace 394802 in these examples with a Release value from the .NET Framework version table.

.NET Framework の古いバージョンを探す (1 から 4)Find older .NET Framework versions (1–4)

レジストリで .NET Framework バージョン 1 から 4 を探すFind .NET Framework versions 1–4 in the registry

  1. スタート メニューの [ファイル名を指定して実行] を選択し、「regedit」と入力し、 [OK] を選択します。From the Start menu, choose Run, enter regedit, and then select OK.

    regedit を実行するには、管理特権が必要です。You must have administrative credentials to run regedit.

  2. レジストリ エディターで、次のサブキーを開きます。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:In the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:

    • .NET Framework バージョン 1.1 から 3.5 では、インストールされている各バージョンは HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP サブキーの下にサブキーとして列挙されます。For .NET Framework versions 1.1 through 3.5, each installed version is listed as a subkey under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP subkey. たとえば、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 です。For example, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5. バージョン番号は、バージョン サブキーの Version エントリに値として格納されています。The version number is stored as a value in the version subkey's Version entry.

    • .NET Framework 4 では、Version エントリは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client サブキー、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full サブキーまたは両サブキーの下にあります。For .NET Framework 4, the Version entry is under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client subkey, the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full subkey, or under both subkeys.

    注意

    レジストリの NET Framework セットアップ フォルダーの先頭はピリオドではありません。The NET Framework Setup folder in the registry does not begin with a period.

    次の図では、.NET Framework 3.5 のサブキーとその Version エントリを示しています。The following figure shows the subkey and its Version entry for the .NET Framework 3.5.

    .NET Framework 3.5 のレジストリ エントリ。The registry entry for the .NET Framework 3.5.

コードで .NET Framework バージョン 1 から 4 を探すFind .NET Framework versions 1–4 with code

  • Microsoft.Win32.RegistryKey クラスを使用して、Windows レジストリの HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP サブキーにアクセスします。Use the Microsoft.Win32.RegistryKey class to access the HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP subkey in the Windows registry.

次の例では、インストールされている .NET Framework のバージョン 1 から 4 が検索されています。The following example finds the .NET Framework 1–4 versions that are installed:

using Microsoft.Win32;
using System;

public static class VersionTest
{
    public static void Main()
    {
        GetVersionFromRegistry();
    }
    
    private static void GetVersionFromRegistry()
    {
        // Opens the registry key for the .NET Framework entry.
        using (RegistryKey ndpKey = 
                RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
                OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
        {
            foreach (var versionKeyName in ndpKey.GetSubKeyNames())
            {
                // Skip .NET Framework 4.5 version information.
                if (versionKeyName == "v4")
                {
                    continue;
                }

                if (versionKeyName.StartsWith("v"))
                {

                    RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
                    // Get the .NET Framework version value.
                    var name = (string)versionKey.GetValue("Version", "");
                    // Get the service pack (SP) number.
                    var sp = versionKey.GetValue("SP", "").ToString();

                    // Get the installation flag, or an empty string if there is none.
                    var install = versionKey.GetValue("Install", "").ToString();
                    if (string.IsNullOrEmpty(install)) // No install info; it must be in a child subkey.
                        Console.WriteLine($"{versionKeyName}  {name}");
                    else
                    {
                        if (!(string.IsNullOrEmpty(sp)) && install == "1")
                        {
                            Console.WriteLine($"{versionKeyName}  {name}  SP{sp}");
                        }
                    }
                    if (! string.IsNullOrEmpty(name))
                    {
                        continue;
                    }
                    foreach (var subKeyName in versionKey.GetSubKeyNames())
                    {
                        RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
                        name = (string)subKey.GetValue("Version", "");
                        if (! string.IsNullOrEmpty(name))
                            sp = subKey.GetValue("SP", "").ToString();
                        
                        install = subKey.GetValue("Install", "").ToString();
                        if (string.IsNullOrEmpty(install)) //No install info; it must be later.
                            Console.WriteLine($"{versionKeyName}  {name}");
                        else
                        {
                            if (!(string.IsNullOrEmpty(sp )) && install == "1")
                            {
                                Console.WriteLine($"{subKeyName}  {name}  SP{sp}");
                            }
                            else if (install == "1")
                            {
                                Console.WriteLine($"  {subKeyName}  {name}");
                            }
                        }
                    }
                }
            }
        }
    }
}
// The example displays output similar to the following:
//        v2.0.50727  2.0.50727.4927  SP2
//        v3.0  3.0.30729.4926  SP2
//        v3.5  3.5.30729.4926  SP1
//        v4.0
//        Client  4.0.0.0
Imports Microsoft.Win32

Public Module VersionTest
    Public Sub Main()
        GetVersionFromRegistry()
    End Sub
    
    Private Sub GetVersionFromRegistry()

        ' Opens the registry key for the .NET Framework entry.
        Using ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32). 
            OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\")

            For Each versionKeyName In ndpKey.GetSubKeyNames()
                ' Skip .NET Framework 4.5 and later.
                If versionKeyName = "v4" Then Continue For

                If versionKeyName.StartsWith("v") Then
                    Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName)
                    ' Get the .NET Framework version value.
                    Dim name = DirectCast(versionKey.GetValue("Version", ""), String)
                    ' Get the service pack (SP) number.
                    Dim sp = versionKey.GetValue("SP", "").ToString()
                   
                    Dim install = versionKey.GetValue("Install", "").ToString()
                    If String.IsNullOrEmpty(install) Then  ' No install info; it must be in a child subkey.
                        Console.WriteLine($"{versionKeyName}  {name}")
                    Else
                        If Not String.IsNullOrEmpty(sp) AndAlso install = "1" Then
                            Console.WriteLine($"{versionKeyName}  {name}  SP{sp}")
                        End If
                    End If
                    If Not String.IsNullOrEmpty(name) Then
                        Continue For
                    End If
                    For Each subKeyName In versionKey.GetSubKeyNames()
                        Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName)
                        name = DirectCast(subKey.GetValue("Version", ""), String)
                        If Not String.IsNullOrEmpty(name) Then
                            sp = subKey.GetValue("SP", "").ToString()
                        End If
                        install = subKey.GetValue("Install", "").ToString()
                        If String.IsNullOrEmpty(install) Then  ' No install info; it must be later.
                            Console.WriteLine($"{versionKeyName}  {name}")
                        Else
                            If Not String.IsNullOrEmpty(sp) AndAlso install = "1" Then
                                Console.WriteLine($"{subKeyName}  {name}  SP{sp}")
                            ElseIf install = "1" Then
                                Console.WriteLine($"  {subKeyName}  {name}")
                            End If
                        End If
                    Next
                End If
            Next
        End Using
    End Sub
End Module
' The example displays output similar to the following:
'        v2.0.50727  2.0.50727.4927  SP2
'        v3.0  3.0.30729.4926  SP2
'        v3.5  3.5.30729.4926  SP1
'        v4.0
'        Client  4.0.0.0

CLR のバージョンを探すFind CLR versions

Clrver.exe を使用して現在の CLR のバージョンを調べるFind the current CLR version with Clrver.exe

CLR バージョン ツール (Clrver.exe) を使用して、コンピューターにインストールされている CLR のバージョンを確認します。Use the CLR Version tool (Clrver.exe) to determine which versions of the CLR are installed on a computer:

Environment クラスを使用して現在の CLR のバージョンを調べるFind the current CLR version with the Environment class

重要

.NET Framework 4.5 以降のバージョンでは、CLR のバージョンの検出に Environment.Version プロパティを使用しないでください。For the .NET Framework 4.5 and later versions, don't use the Environment.Version property to detect the version of the CLR. 代わりに、「コードで .NET Framework バージョン 4.5 以降を探す」の説明に従い、レジストリを照会します。Instead, query the registry as described in Find .NET Framework versions 4.5 and later with code.

  1. Environment.Version プロパティを照会し、Version オブジェクトを取得します。Query the Environment.Version property to retrieve a Version object.

    返された System.Version オブジェクトは、現在コードを実行しているランタイムのバージョンを示しています。The returned System.Version object identifies the version of the runtime that's currently executing the code. コンピューターにインストールされている可能性のある、アセンブリのバージョンやランタイムのその他のバージョンは返されません。It doesn't return assembly versions or other versions of the runtime that may have been installed on the computer.

    .NET Framework バージョン 4、4.5、4.5.1、4.5.2 の場合は、返される Version オブジェクトの文字列表現は 4.0.30319.xxxxx という形式です。ここでの xxxxx は 42000 より小さいです。For the .NET Framework versions 4, 4.5, 4.5.1, and 4.5.2, the string representation of the returned Version object has the form 4.0.30319.xxxxx, where xxxxx is less than 42000. .NET Framework 4.6 以降のバージョンの場合は、4.0.30319.42000 という形式です。For the .NET Framework 4.6 and later versions, it has the form 4.0.30319.42000.

  2. Version オブジェクトを取得したら、次のように照会します。After you have the Version object, query it as follows:

    • メジャー リリース識別子 (たとえば、バージョン 4.0 の場合の 4) には、Version.Major プロパティを使用します。For the major release identifier (for example, 4 for version 4.0), use the Version.Major property.

    • マイナー リリース識別子 (たとえば、バージョン 4.0 の場合の 0) には、Version.Minor プロパティを使用します。For the minor release identifier (for example, 0 for version 4.0), use the Version.Minor property.

    • バージョンの完全な文字列 (たとえば、4.0.30319.18010) には、Version.ToString メソッドを使用します。For the entire version string (for example, 4.0.30319.18010), use the Version.ToString method. このメソッドでは、コードを実行しているランタイムのバージョンを示す値が 1 つ返されます。This method returns a single value that reflects the version of the runtime that's executing the code. コンピューターにインストールされている可能性のあるアセンブリ バージョンやその他のランタイム バージョンは返されません。It doesn't return assembly versions or other runtime versions that may be installed on the computer.

次の例では、Environment.Version プロパティを使用して CLR バージョンの情報を取得しています。The following example uses the Environment.Version property to retrieve CLR version information:

using System;

public class VersionTest
{
    public static void Main()
    {
        Console.WriteLine($"Version: {Environment.Version}");
    }
}
// The example displays output similar to the following:'
//    Version: 4.0.30319.18010
Imports Microsoft.Win32

Public Module VersionTest
   Public Sub Main()
      GetVersionFromEnvironment()
   End Sub
   
    Private Sub GetVersionFromEnvironment()
        Console.WriteLine($"Version: {Environment.Version}")
    End Sub
End Module
' The example displays output similiar to the following:'
'    Version: 4.0.30319.18010

関連項目See also