Procedura: Determinare le versioni di .NET Framework installateHow to: Determine which .NET Framework versions are installed

Gli utenti possono installare ed eseguire più versioni del .NET Framework nei propri computer.Users can install and run multiple versions of the .NET Framework on their computers. Quando si sviluppa o si distribuisce l'app, potrebbe essere necessario conoscere quali versioni di .NET Framework sono installate nel computer dell'utente.When you develop or deploy your app, you might need to know which .NET Framework versions are installed on the user’s computer. Il registro di sistema contiene un elenco delle versioni .NET Framework installate in un computer.The registry contains a list of the .NET Framework versions installed on a computer.

.NET Framework è costituito da due componenti principali, le cui versioni sono definite separatamente:The .NET Framework consists of two main components, which are versioned separately:

  • Un set di assembly, ovvero raccolte di tipi e risorse che forniscono la funzionalità per le app.A set of assemblies, which are collections of types and resources that provide the functionality for your apps. .NET Framework e gli assembly condividono lo stesso numero di versione.The .NET Framework and assemblies share the same version number. Ad esempio, le versioni di .NET Framework includono 4.5, 4.6.1 e 4.7.2.For example, .NET Framework versions include 4.5, 4.6.1, and 4.7.2.

  • Common Language Runtime (CLR), che gestisce ed esegue il codice dell'appThe common language runtime (CLR), which manages and executes your app's code. In genere una singola versione di CLR supporta più versioni di .NET Framework.A single CLR version typically supports multiple .NET Framework versions. Ad esempio CLR Version 4.0.30319. xxxxx , dove xxxxx è inferiore a 42000, supporta .NET Framework versioni da 4 a 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. La versione di CLR maggiore o uguale a 4.0.30319.42000 supporta .NET Framework versioni che iniziano con .NET Framework 4,6.CLR version greater than or equal to 4.0.30319.42000 supports .NET Framework versions starting with .NET Framework 4.6.

Sono disponibili strumenti gestiti dalla community che consentono di individuare le versioni di .NET Framework installate:Community-maintained tools are available to help detect which .NET Framework versions are installed:

Per informazioni sul rilevamento degli aggiornamenti installati per ogni versione della .NET Framework, vedere procedura: determinare quali aggiornamenti di .NET Framework sono installati.For information about detecting the installed updates for each version of the .NET Framework, see How to: Determine which .NET Framework updates are installed.

Rilevare .NET Framework 4,5 e versioni successiveDetect .NET Framework 4.5 and later versions

La versione di .NET Framework (4,5 e versioni successive) installata in un computer è elencata nel registro di sistema in 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. Se manca la sottochiave completa, .NET Framework 4,5 o versione successiva non è installato.If the Full subkey is missing, then .NET Framework 4.5 or above isn't installed.

Nota

La sottochiave di installazione di .NET Framework nel percorso del registro di sistema non inizia con un punto.The NET Framework Setup subkey in the registry path does not begin with a period.

Il valore REG_DWORD di rilascio nel registro di sistema rappresenta la versione di .NET Framework installata.The Release REG_DWORD value in the registry represents the version of .NET Framework installed.

Versione di .NET Framework.NET Framework version Valore della versioneValue of Release
.NET Framework 4.5.NET Framework 4.5 Tutti i sistemi operativi Windows: 378389All Windows operating systems: 378389
.NET Framework 4.5.1.NET Framework 4.5.1 In Windows 8.1 e Windows Server 2012 R2:378675On Windows 8.1 and Windows Server 2012 R2: 378675
In tutti gli altri sistemi operativi Windows: 378758On all other Windows operating systems: 378758
.NET Framework 4.5.2.NET Framework 4.5.2 Tutti i sistemi operativi Windows: 379893All Windows operating systems: 379893
.NET framework 4.6.NET Framework 4.6 In Windows 10:393295On Windows 10: 393295
In tutti gli altri sistemi operativi Windows: 393297On all other Windows operating systems: 393297
.NET Framework 4.6.1.NET Framework 4.6.1 Nei sistemi Windows 10 con aggiornamento di novembre: 394254On Windows 10 November Update systems: 394254
In tutti gli altri sistemi operativi Windows (incluso Windows 10): 394271On all other Windows operating systems (including Windows 10): 394271
.NET Framework 4.6.2.NET Framework 4.6.2 Nell'Aggiornamento dell'anniversario di Windows 10 e in Windows Server 2016: 394802On Windows 10 Anniversary Update and Windows Server 2016: 394802
In tutti gli altri sistemi operativi Windows (inclusi altri sistemi operativi Windows 10): 394806On all other Windows operating systems (including other Windows 10 operating systems): 394806
.NET Framework 4.7.NET Framework 4.7 In Windows 10 Creators Update: 460798On Windows 10 Creators Update: 460798
In tutti gli altri sistemi operativi Windows (inclusi altri sistemi operativi 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 In Windows 10 Fall Creators Update e Windows Server versione 1709:461308On Windows 10 Fall Creators Update and Windows Server, version 1709: 461308
In tutti gli altri sistemi operativi Windows (inclusi altri sistemi operativi 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 In Windows 10 aprile 2018 aggiornamento e Windows Server, versione 1803:461808On Windows 10 April 2018 Update and Windows Server, version 1803: 461808
In tutti i sistemi operativi Windows diversi da Windows 10 aprile 2018 aggiornamento e Windows Server, versione 1803: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 In Windows 10 maggio 2019 aggiornamento e Windows 10 novembre 2019 aggiornamento: 528040On Windows 10 May 2019 Update and Windows 10 November 2019 Update: 528040
In Windows 10 maggio 2020 aggiornamento: 528372On Windows 10 May 2020 Update: 528372
In tutti gli altri sistemi operativi Windows (inclusi altri sistemi operativi Windows 10): 528049On all other Windows operating systems (including other Windows 10 operating systems): 528049

Versione minimaMinimum version

Per determinare se è presente una versione minima del .NET Framework, utilizzare il valore di rilascio più piccolo REG_DWORD per quella versione della tabella precedente.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.

Se, ad esempio, l'applicazione viene eseguita con .NET Framework 4,8 o versione successiva, testare un valore di REG_DWORD versione maggiore o uguale a 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.

Versione di .NET Framework.NET Framework version Valore minimoMinimum 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

Utilizzare l'editor del registro di sistemaUse Registry Editor

  1. Dal menu Start scegliere Esegui, immettere regedit e quindi selezionare OK.From the Start menu, choose Run, enter regedit, and then select OK.

    Per eseguire regedit, è necessario avere le credenziali amministrative.You must have administrative credentials to run regedit.

  2. Nell'editor del registro di sistema aprire la sottochiave seguente: 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. Se la sottochiave Full non è presente, .NET Framework 4.5 o versioni successive non è installato.If the Full subkey isn't present, then you don't have the .NET Framework 4.5 or later installed.

  3. Verificare la presenza di una voce di REG_DWORD denominata Release.Check for a REG_DWORD entry named Release. Se esiste, è necessario che sia installato .NET Framework 4,5 o versione successiva.If it exists, then you have .NET Framework 4.5 or later installed. Il valore corrisponde a una particolare versione del .NET Framework.Its value corresponds to a particular version of the .NET Framework. Nella figura seguente, ad esempio, il valore della voce di versione è 528040, ovvero la chiave di rilascio per .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.

    Voce del registro di sistema per la .NET Framework 4,5Registry entry for the .NET Framework 4.5

Usare PowerShell per verificare la presenza di una versione minimaUse PowerShell to check for a minimum version

Usare i comandi di PowerShell per controllare il valore della voce di rilascio della sottochiave **completa del \ software HKEY_LOCAL_MACHINE \ Microsoft \ NET Framework Setup \ NDP \ V4 \ ** .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.

Gli esempi seguenti illustrano come verificare il valore della voce Release per determinare se .NET Framework 4.6.2 o versioni successive è installato.The following examples check the value of the Release entry to determine whether the .NET Framework 4.6.2 or later is installed. Questo codice restituisce True se è installato e False in caso contrario.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

Eseguire query sul Registro di sistema usando il codiceQuery the registry using code

  1. Usare i RegistryKey.OpenBaseKey RegistryKey.OpenSubKey metodi e per accedere alla sottochiave ** \ completa del software HKEY_LOCAL_MACHINE \ Microsoft NET Framework per l'installazione di \ \ NDP \ \ V4** nel registro di sistema di 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.

    Importante

    Se l'app in esecuzione è a 32 bit e viene eseguita in Windows a 64 bit, i percorsi del registro di sistema saranno diversi da quelli elencati in precedenza.If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. Il registro di sistema a 64 bit è disponibile nella sottochiave ** \ \ Wow6432Node \ software HKEY_LOCAL_MACHINE** .The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. La sottochiave del registro di sistema per .NET Framework 4,5 è ad esempio 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. Controllare il valore di REG_DWORD versione per determinare la versione installata.Check the Release REG_DWORD value to determine the installed version. Affinché sia compatibile con la versione attualmente installata, è possibile cercare un valore maggiore o uguale ai valori elencati nella tabella delle versioni di .NET Framework.To be forward-compatible, check for a value greater than or equal to the value listed in the .NET Framework version table.

L'esempio seguente illustra come verificare il valore della voce Release nel Registro di sistema per determinare quale versione di .NET Framework 4.5 e versioni successive è installata: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

Questo esempio segue la procedura consigliata per il controllo della versione:This example follows the recommended practice for version checking:

  • Verifica se il valore della voce Release è maggiore o uguale al valore delle parole chiave Release note.It checks whether the value of the Release entry is greater than or equal to the value of the known release keys.
  • Controlla in ordine dalla versione più recente a quella meno recente.It checks in order from most recent version to earliest version.

Rileva .NET Framework da 1,0 a 4,0Detect .NET Framework 1.0 through 4.0

Ogni versione di .NET Framework da 1,1 a 4,0 è elencata come sottochiave in 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. La tabella seguente elenca il percorso di ogni versione di .NET Framework.The following table lists the path to each .NET Framework version. Per la maggior parte delle versioni, viene installato un valore di REG_DWORD 1 per indicare che questa versione è installata.For most versions, there's a Install REG_DWORD value of 1 to indicate this version is installed. In queste sottochiavi è presente anche una versione REG_SZ valore che contiene una stringa di versione.In these subkeys, there's also a Version REG_SZ value that contains a version string.

Nota

La sottochiave di installazione di .NET Framework nel percorso del registro di sistema non inizia con un punto.The NET Framework Setup subkey in the registry path does not begin with a period.

Versione del FrameworkFramework Version Sottochiave del registro di sistemaRegistry Subkey ValoreValue
1,01.0 HKLM \ software \ Microsoft \ . \Criteri NETFramework \ v 1.0 \ 3705HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705 Installa REG_SZ uguale a 1Install REG_SZ equals 1
1.11.1 HKLM \ software \ Microsoft \ NET Framework Setup \ NDP \ v 1.1.4322HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 Installa REG_DWORD uguale a 1Install REG_DWORD equals 1
2.02.0 HKLM \ software \ Microsoft \ NET Framework Setup \ NDP \ v 2.0.50727HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 Installa REG_DWORD uguale a 1Install REG_DWORD equals 1
3,03.0 Installazione di HKLM \ software \ Microsoft \ NET Framework installazione di \ NDP \ v 3.0 \HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup InstallSuccess REG_DWORD uguale a 1InstallSuccess REG_DWORD equals 1
3,53.5 HKLM \ software \ Microsoft \ NET Framework Setup \ NDP \ v 3.5HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 Installa REG_DWORD uguale a 1Install REG_DWORD equals 1
4,0 profilo client4.0 Client Profile HKLM \ software \ Microsoft \ NET Framework Setup \ NDP \ V4 \ clientHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client Installa REG_DWORD uguale a 1Install REG_DWORD equals 1
4,0 profilo completo4.0 Full Profile HKLM \ software \ Microsoft \ NET Framework installazione di \ NDP \ V4 \ fullHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full Installa REG_DWORD uguale a 1Install REG_DWORD equals 1

Importante

Se l'app in esecuzione è a 32 bit e viene eseguita in Windows a 64 bit, i percorsi del registro di sistema saranno diversi da quelli elencati in precedenza.If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. Il registro di sistema a 64 bit è disponibile nella sottochiave ** \ \ Wow6432Node \ software HKEY_LOCAL_MACHINE** .The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. La sottochiave del registro di sistema per .NET Framework 3,5 è ad esempio HKEY_LOCAL_MACHINE \ software \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v 3.5.For example, the registry subkey for .NET Framework 3.5 is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.

Si noti che il percorso del registro di sistema della sottochiave .NET Framework 1,0 è diverso da quello degli altri.Notice that the registry path to the .NET Framework 1.0 subkey is different from the others.

Utilizzare l'editor del registro di sistema (versioni precedenti del Framework)Use Registry Editor (older framework versions)

  1. Dal menu Start scegliere Esegui, immettere regedit e quindi selezionare OK.From the Start menu, choose Run, enter regedit, and then select OK.

    Per eseguire regedit, è necessario avere le credenziali amministrative.You must have administrative credentials to run regedit.

  2. Aprire la sottochiave che corrisponde alla versione che si desidera controllare.Open the subkey that matches the version you want to check. Usare la tabella nella sezione Detect .NET Framework 1,0 through 4,0 .Use the table in the Detect .NET Framework 1.0 through 4.0 section.

    Nella figura seguente sono illustrate la sottochiave e il relativo valore di versione per .NET Framework 3,5.The following figure shows the subkey and its Version value for .NET Framework 3.5.

    Voce del registro di sistema per la .NET Framework 3,5.The registry entry for the .NET Framework 3.5.

Eseguire query sul Registro di sistema usando il codice (versioni precedenti del Framework)Query the registry using code (older framework versions)

Usare la Microsoft.Win32.RegistryKey classe per accedere alla sottochiave del ** \ programma di installazione di Microsoft NET Framework di HKEY_LOCAL_MACHINE software \ Microsoft \ NET Framework \ ** nel registro di sistema di WindowsUse the Microsoft.Win32.RegistryKey class to access the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP subkey in the Windows registry.

Importante

Se l'app in esecuzione è a 32 bit e viene eseguita in Windows a 64 bit, i percorsi del registro di sistema saranno diversi da quelli elencati in precedenza.If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. Il registro di sistema a 64 bit è disponibile nella sottochiave ** \ \ Wow6432Node \ software HKEY_LOCAL_MACHINE** .The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. La sottochiave del registro di sistema per .NET Framework 3,5 è ad esempio HKEY_LOCAL_MACHINE \ software \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v 3.5.For example, the registry subkey for .NET Framework 3.5 is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.

Nell'esempio seguente vengono individuate le .NET Framework da 1 a 4 versioni installate: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

Trovare le versioni di CLRFind CLR versions

Il .NET Framework CLR installato con .NET Framework viene sottoversione separatamente.The .NET Framework CLR installed with .NET Framework is versioned separately. Esistono due modi per rilevare la versione del .NET Framework CLR:There are two ways to detect the version of the .NET Framework CLR:

  • Strumento Clrver.exeThe Clrver.exe tool

    Utilizzare lo strumento versione CLR (Clrver.exe) per determinare quali versioni di CLR sono installate in un computer.Use the CLR Version tool (Clrver.exe) to determine which versions of the CLR are installed on a computer. Aprire il prompt dei comandi per gli sviluppatori per Visual Studio e immettere clrver .Open the Developer Command Prompt for Visual Studio and enter clrver.

    Output di esempio:Sample output:

    Versions installed on the machine:
    v2.0.50727
    v4.0.30319
    
  • EnvironmentClasseThe Environment class

    Importante

    Per .NET Framework 4,5 e versioni successive, non usare la Environment.Version proprietà per rilevare la versione di CLR.For .NET Framework 4.5 and later versions, don't use the Environment.Version property to detect the version of the CLR. In alternativa, eseguire una query sul Registro di sistema come descritto in rilevare .NET Framework 4,5 e versioni successive.Instead, query the registry as described in Detect .NET Framework 4.5 and later versions.

    1. Eseguire la query per la proprietà Environment.Version per recuperare un oggetto Version.Query the Environment.Version property to retrieve a Version object.

      L'oggetto System.Version identifica la versione del runtime che esegue attualmente il codice.The returned System.Version object identifies the version of the runtime that's currently executing the code. Non restituisce le versioni di assembly o altre versioni del runtime che potrebbero essere state installate nel computer.It doesn't return assembly versions or other versions of the runtime that may have been installed on the computer.

      Per .NET Framework versioni 4, 4,5, 4.5.1 e 4.5.2, la rappresentazione di stringa dell'oggetto restituito Version ha il formato 4.0.30319.* xxxxx*, dove xxxxx è inferiore a 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. Per .NET Framework 4,6 e versioni successive, il formato è 4.0.30319.42000.For .NET Framework 4.6 and later versions, it has the form 4.0.30319.42000.

    2. Dopo aver eseguito l'oggetto versione , eseguire una query nel modo seguente:After you have the Version object, query it as follows:

      • Per l'identificatore della versione principale (ad esempio, 4 per la versione 4.0), usare la proprietà Version.Major.For the major release identifier (for example, 4 for version 4.0), use the Version.Major property.

      • Per l'identificatore della versione secondaria (ad esempio, 0 per la versione 4.0), usare la proprietà Version.Minor.For the minor release identifier (for example, 0 for version 4.0), use the Version.Minor property.

      • Per l'intera stringa di versione (ad esempio, 4.0.30319.18010), usare il metodo Version.ToString.For the entire version string (for example, 4.0.30319.18010), use the Version.ToString method. Questo metodo restituisce un valore singolo che riflette la versione del runtime che esegue il codice.This method returns a single value that reflects the version of the runtime that's executing the code. Non restituisce le versioni di assembly o altre versioni del runtime che potrebbero essere installate nel computer.It doesn't return assembly versions or other runtime versions that may be installed on the computer.

    L'esempio seguente usa la proprietà Environment.Version per recuperare le informazioni sulla versione di 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
    
    

Vedere ancheSee also