Как выполнить Определение установленных версий платформы .NET FrameworkHow 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 .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 имеет собственный номер версии (см. раздел Версии и зависимости .NET Framework).The CLR is identified by its own version number (see Versions and Dependencies).

Примечание

В каждой новой версии платформы .NET Framework сохранены функции предыдущих версий и добавлены новые функции.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, так как используемое приложение может зависеть от конкретной версии .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. Одна версия среды CLR обычно поддерживает несколько версий .NET Framework.A single CLR version typically supports multiple .NET Framework versions. Например, среда CLR версии 4.0.30319.xxxxx поддерживает .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 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 и нажмите кнопку ОК.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\Full.In 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 Setup в реестре не начинается с точки.The NET Framework Setup folder in the registry does not begin with a period.

  3. Проверьте значение DWORD с именем Release.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.5Registry entry for the .NET Framework 4.5

В следующей таблице перечислены значение DWORD Release в отдельных операционных системах для .NET Framework 4.5 и более поздних версий.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 Значение DWORD "Release"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 с ноябрьским обновлением: 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 и 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 за апрель 2018 г. Update и Windows Server версии 1803: 461808On Windows 10 April 2018 Update and Windows Server, version 1803: 461808
Все остальные операционные системы, кроме Windows 10 с обновлением за апрель 2018 г. и Windows Server версии 1803: 461814On all Windows operating systems other than Windows 10 April 2018 Update and Windows Server, version 1803: 461814

Эти значения можно использовать следующим образом:You can use these values as follows:

  • Чтобы определить наличие конкретной версии .NET Framework в определенной версии операционной системы Windows, проверьте, равно ли значение DWORD Release значению, указанному в таблице.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, используйте меньшее значение DWORD RELEASE для этой версии.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 или более поздней версии, проверьте, является ли значение DWORD RELEASE большим или равным 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. Таблицу, в которой указаны только минимально необходимые значения DWORD RELEASE для каждой версии .NET Framework, см. в статье Минимальные значения Release DWORD для .NET Framework 4.5 и более поздних версий.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.

  • Для проверки нескольких версий сначала проверьте значение, которое больше или равно наименьшему значению DWORD для новейшей версии .NET Framework, а затем сравните значение с наименьшим значением 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, сначала проверьте, что значение DWORD RELEASE больше или равно 461808 (наименьшему значению DWORD для .NET Framework 4.7.2).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). Сравните значение DWORD RELEASE с наименьшим значением для каждой более поздней версии .NET Framework.Then compare the RELEASE DWORD value with the smaller value for each later .NET Framework version. Таблицу, в которой указаны только минимально необходимые значения DWORD RELEASE для каждой версии .NET Framework, см. в статье Минимальные значения Release DWORD для .NET Framework 4.5 и более поздних версий.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 для доступа к подразделу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full в реестре Windows.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.

    Наличие параметра Release типа DWORD в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full свидетельствует о том, что на компьютере установлена платформа .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.

Проверка наличия минимально необходимой версии .NET Framework (4.5 или более поздней) с помощью PowerShellCheck for a minimum-required .NET Framework version (4.5 and later) with PowerShell

  • Используйте команды PowerShell для проверки значения параметра Release в подразделе HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.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 проверяется с целью определить, установлена ли версия 4.6.2 или более поздняя версия .NET Framework.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 в этих примерах на значение Release из таблицы версий NET Framework.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–4Find .NET Framework versions 1–4 in the registry

  1. В меню Пуск выберите Выполнить, введите regedit и нажмите кнопку ОК.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 Setup в реестре не начинается с точки.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.5The registry entry for the .NET Framework 3.5.

Поиск .NET Framework версий 1–4 с помощью кодаFind .NET Framework versions 1–4 with code

  • Используйте класс Microsoft.Win32.RegistryKey для доступа к подразделу HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP в реестре Windows.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

Поиск версий CLRFind CLR versions

Поиск текущей версии среды CLR с помощью Clrver.exeFind the current CLR version with Clrver.exe

Для определения версий среды CLR, установленных на компьютере, можно использовать средство CLR Version (Clrver.exe).Use the CLR Version tool (Clrver.exe) to determine which versions of the CLR are installed on a computer:

Поиск текущей версии среды CLR с помощью класса EnvironmentFind the current CLR version with the Environment class

Важно!

Для .NET Framework 4.5 и более поздних версий не следует использовать свойство Environment.Version для определения версии среды CLR.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.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. Для .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 в случае версии 4.0), используйте свойство Version.Major.For the major release identifier (for example, 4 for version 4.0), use the Version.Major property.

    • Чтобы получить идентификатор дополнительной версии (например, 0 в случае версии 4.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. Он возвращает одно значение, соответствующее версии среды выполнения, в которой выполняется код.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