方法: インストールされている .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 のバージョンの一覧が含まれています。The registry contains a list of the .NET Framework versions installed on a 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. たとえば、.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)。The common language runtime (CLR), which manages and executes your app's code. 1 つの CLR バージョンは、通常複数の NET Framework バージョンをサポートしています。A single CLR version typically supports multiple .NET Framework versions. たとえば、CLR バージョン 4.0.30319.xxxxxxxxxx が 42000 未満の場合、.NET Framework バージョン 4 から 4.5.2 がサポートされます。For example, CLR version 4.0.30319.xxxxx where xxxxx is less than 42000, supports .NET Framework versions 4 through 4.5.2. 4.0.30319.42000 以上の CLR バージョンでは、.NET Framework 4.6 以降の .NET Framework バージョンがサポートされます。CLR version greater than or equal to 4.0.30319.42000 supports .NET Framework versions starting with .NET Framework 4.6.

コミュニティで管理されているツールを使用して、インストールされている .NET Framework バージョンを検出できます。Community-maintained tools are available to help detect which .NET Framework versions are installed:

.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 以降のバージョンを検出するDetect .NET Framework 4.5 and later versions

コンピューターにインストールされている .NET Framework (4.5 以降) のバージョンは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full のレジストリに一覧されています。The version of .NET Framework (4.5 and later) installed on a machine is listed in the registry at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Full サブキーが見つからない場合、.NET Framework 4.5 以降はインストールされていません。If the Full subkey is missing, then .NET Framework 4.5 or above isn't installed.

注意

レジストリ パスの NET Framework Setup サブキーの先頭は、ピリオドでは "ありません"。The NET Framework Setup subkey in the registry path does not begin with a period.

レジストリの Release REG_DWORD の値は、インストールされている .NET Framework のバージョンを表します。The Release REG_DWORD value in the registry represents the version of .NET Framework installed.

.NET Framework のバージョン.NET Framework version Release の値Value of Release
.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 および Windows 10 November 2019 Update:528040On Windows 10 May 2019 Update and Windows 10 November 2019 Update: 528040
Windows 10 および Windows Server、バージョン 1909: 528209On Windows 10 and Windows Server, version 1909: 528209
他のすべての Windows オペレーティング システム (他の Windows 10 オペレーティング システムを含む):528049On all other Windows operating systems (including other Windows 10 operating systems): 528049

最小バージョンMinimum version

.NET Framework の "最小" バージョンが存在するかどうかを判断するには、前の表から、そのバージョンの最小の Release REG_DWORD の値を使用します。To determine whether a minimum version of the .NET Framework is present, use the smallest Release REG_DWORD value for that version from the previous table.

たとえば、アプリケーションが .NET Framework 4.8 以降のバージョンで実行されている場合、Release REG_DWORD の値が 528040 "以上" であることを確認します。For example, if your application runs under .NET Framework 4.8 or a later version, test for a Release REG_DWORD value that is greater than or equal to 528040.

.NET Framework のバージョン.NET Framework version 最小値Minimum value
.NET Framework 4.5.NET Framework 4.5 378389378389
.NET Framework 4.5.1.NET Framework 4.5.1 378675378675
.NET Framework 4.5.2.NET Framework 4.5.2 379893379893
.NET Framework 4.6.NET Framework 4.6 393295393295
.NET Framework 4.6.1.NET Framework 4.6.1 394254394254
.NET Framework 4.6.2.NET Framework 4.6.2 394802394802
.NET Framework 4.7.NET Framework 4.7 460798460798
.NET Framework 4.7.1.NET Framework 4.7.1 461308461308
.NET Framework 4.7.2.NET Framework 4.7.2 461808461808
.NET Framework 4.8.NET Framework 4.8 528040528040

レジストリ エディターを使用するUse Registry Editor

  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.

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

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

PowerShell を使用して最小バージョンを確認するUse PowerShell to check for a minimum version

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.

(Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

コードを使用してレジストリのクエリを実行するQuery the registry using 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.

    重要

    実行しているアプリが 32 ビットで、64 ビットの Windows で実行されている場合、レジストリ パスは前に示したものとは異なります。If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. 64 ビットのレジストリは、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ サブキーで入手できます。The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. たとえば、.NET Framework 4.5 のレジストリ サブキーは、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full になります。For example, the registry subkey for .NET Framework 4.5 is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full.

  2. Release REG_DWORD の値を確認して、インストールされているバージョンを判断します。Check the Release REG_DWORD value 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.

.NET Framework 1.0 から 4.0 を検出するDetect .NET Framework 1.0 through 4.0

.NET Framework 1.1 から 4.0 の各バージョンは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP のサブキーとして一覧されています。Each version of .NET Framework from 1.1 to 4.0 is listed as a subkey at HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP. 次の表には、各 .NET Framework バージョンへのパスが一覧されています。The following table lists the path to each .NET Framework version. ほとんどのバージョンでは、1Install REG_DWORD の値があり、このバージョンがインストールされていることを示します。For most versions, there's a Install REG_DWORD value of 1 to indicate this version is installed. これらのサブキーには、バージョン文字列を含む Version REG_SZ の値もあります。In these subkeys, there's also a Version REG_SZ value that contains a version string.

注意

レジストリ パスの NET Framework Setup サブキーの先頭は、ピリオドでは "ありません"。The NET Framework Setup subkey in the registry path does not begin with a period.

Framework のバージョンFramework Version レジストリ サブキーRegistry Subkey [値]Value
11.0 HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705 Install REG_SZ は 1 と等しいInstall REG_SZ equals 1
1.11.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 Install REG_DWORD は 1 と等しいInstall REG_DWORD equals 1
2.02.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 Install REG_DWORD は 1 と等しいInstall REG_DWORD equals 1
3.03.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\SetupHKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup InstallSuccess REG_DWORD は 1 と等しいInstallSuccess REG_DWORD equals 1
3.53.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 Install REG_DWORD は 1 と等しいInstall REG_DWORD equals 1
4.0 Client Profile4.0 Client Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\ClientHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client Install REG_DWORD は 1 と等しいInstall REG_DWORD equals 1
4.0 Full Profile4.0 Full Profile HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\FullHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full Install REG_DWORD は 1 と等しいInstall REG_DWORD equals 1

重要

実行しているアプリが 32 ビットで、64 ビットの Windows で実行されている場合、レジストリ パスは前に示したものとは異なります。If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. 64 ビットのレジストリは、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ サブキーで入手できます。The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. たとえば、.NET Framework 3.5 のレジストリ サブキーは、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5 になります。For example, the registry subkey for .NET Framework 3.5 is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.

.NET Framework 1.0 サブキーへのレジストリ パスは、他のものとは異なるので注意してください。Notice that the registry path to the .NET Framework 1.0 subkey is different from the others.

レジストリ エディターを使用する (古いバージョンのフレームワーク)Use Registry Editor (older framework versions)

  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. 確認するバージョンと一致するサブキーを開きます。Open the subkey that matches the version you want to check. .NET Framework 1.0 から 4.0 を検出する」セクションの表を使用します。Use the table in the Detect .NET Framework 1.0 through 4.0 section.

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

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

コードを使用してレジストリのクエリを実行する (以前のバージョンのフレームワーク)Query the registry using code (older framework versions)

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.

重要

実行しているアプリが 32 ビットで、64 ビットの Windows で実行されている場合、レジストリ パスは前に示したものとは異なります。If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. 64 ビットのレジストリは、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ サブキーで入手できます。The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. たとえば、.NET Framework 3.5 のレジストリ サブキーは、HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5 になります。For example, the registry subkey for .NET Framework 3.5 is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.

次の例では、インストールされている .NET Framework のバージョン 1 から 4 が検索されています。The following example finds the .NET Framework 1 through 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

.NET Framework と共にインストールされる .NET Framework CLR は、個別にバージョン管理されます。The .NET Framework CLR installed with .NET Framework is versioned separately. .NET Framework CLR のバージョンを検出するには、2 つの方法があります。There are two ways to detect the version of the .NET Framework CLR:

  • Clrver.exe ツールThe Clrver.exe tool

    CLR バージョン ツール (Clrver.exe) を使用して、コンピューターにインストールされている CLR のバージョンを判断します。Use the CLR Version tool (Clrver.exe) to determine which versions of the CLR are installed on a computer. Visual Studio の開発者コマンド プロンプトを開いて、「clrver」と入力します。Open the Developer Command Prompt for Visual Studio and enter clrver.

    出力例Sample output:

    Versions installed on the machine:
    v2.0.50727
    v4.0.30319
    
  • Environment クラスThe Environment class

    重要

    .NET Framework 4.5 以降のバージョンでは、CLR のバージョンの検出に Environment.Version プロパティを使用しないでください。For .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 Detect .NET Framework 4.5 and later versions.

    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 .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 .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