Guide pratique pour déterminer les versions du .NET Framework installéesHow to: Determine which .NET Framework versions are installed

Les utilisateurs peuvent installer et exécuter plusieurs versions du .NET Framework sur leurs ordinateurs.Users can install and run multiple versions of the .NET Framework on their computers. Quand vous développez ou déployez votre application, vous pouvez avoir besoin de savoir quelles versions de .NET Framework sont installées sur l'ordinateur de l'utilisateur.When you develop or deploy your app, you might need to know which .NET Framework versions are installed on the user’s computer. Le registre contient une liste des versions de .NET Framework installées sur un ordinateur.The registry contains a list of the .NET Framework versions installed on a computer.

Le .NET Framework comporte deux principaux composants, dont les versions sont définies séparément :The .NET Framework consists of two main components, which are versioned separately:

  • Un jeu d'assemblys, qui correspondent aux collections de types et de ressources qui fournissent les fonctionnalités de vos applications.A set of assemblies, which are collections of types and resources that provide the functionality for your apps. .NET Framework et les assemblys partagent le même numéro de version.The .NET Framework and assemblies share the same version number. Par exemple, 4.5, 4.6.1 et 4.7.2 sont des versions de .NET Framework.For example, .NET Framework versions include 4.5, 4.6.1, and 4.7.2.

  • Le Common Language Runtime (CLR), qui gère et exécute le code de votre application.The common language runtime (CLR), which manages and executes your app's code. En règle générale, une version particulière du CLR prend en charge plusieurs versions du .NET Framework.A single CLR version typically supports multiple .NET Framework versions. Par exemple, CLR version 4.0.30319. xxxxxxxxxx est inférieur à 42000, prend en charge .NET Framework les versions 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. La version CLR supérieure ou égale à 4.0.30319.42000 prend en charge les versions .NET Framework à partir de .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.

Des outils gérés par la Communauté sont disponibles pour vous aider à détecter les versions de .NET Framework installées :Community-maintained tools are available to help detect which .NET Framework versions are installed:

Pour plus d’informations sur la détection des mises à jour installées pour chaque version du .NET Framework, consultez procédure : déterminer les mises à jour de .NET Framework installées.For information about detecting the installed updates for each version of the .NET Framework, see How to: Determine which .NET Framework updates are installed.

Détection des .NET Framework 4,5 et versions ultérieuresDetect .NET Framework 4.5 and later versions

La version de .NET Framework (4,5 et versions ultérieures) installée sur un ordinateur est listée dans le registre à l’adresse HKEY_LOCAL_MACHINE \ logiciel \ Microsoft \ NET Framework installation \ 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. Si la sous-clé complète est manquante, .NET Framework 4,5 ou version ultérieure n’est pas installé.If the Full subkey is missing, then .NET Framework 4.5 or above isn't installed.

Notes

La sous-clé d’installation du .NET Framework dans le chemin d’accès du registre ne commence pas par un point.The NET Framework Setup subkey in the registry path does not begin with a period.

La valeur de REG_DWORD de version dans le registre représente la version de .NET Framework installée.The Release REG_DWORD value in the registry represents the version of .NET Framework installed.

Version du .NET Framework.NET Framework version Valeur de la mise en versionValue of Release
.NET Framework 4.5.NET Framework 4.5 Tous les systèmes d’exploitation Windows : 378389All Windows operating systems: 378389
.NET Framework 4.5.1.NET Framework 4.5.1 Sur Windows 8.1 et Windows Server 2012 R2:378675On Windows 8.1 and Windows Server 2012 R2: 378675
Sur tous les autres systèmes d’exploitation Windows : 378758On all other Windows operating systems: 378758
.NET Framework 4.5.2.NET Framework 4.5.2 Tous les systèmes d’exploitation Windows : 379893All Windows operating systems: 379893
.NET Framework 4.6.NET Framework 4.6 Sur Windows 10:393295On Windows 10: 393295
Sur tous les autres systèmes d’exploitation Windows : 393297On all other Windows operating systems: 393297
.NET Framework 4.6.1.NET Framework 4.6.1 Sur les systèmes Windows intégrant la mise à jour du 10 novembre : 394254On Windows 10 November Update systems: 394254
Sur tous les autres systèmes d’exploitation Windows (y compris Windows 10) : 394271On all other Windows operating systems (including Windows 10): 394271
.NET Framework 4.6.2.NET Framework 4.6.2 Sur les systèmes Mise à jour anniversaire Windows 10 et Windows Server 2016 : 394802On Windows 10 Anniversary Update and Windows Server 2016: 394802
Sur tous les autres systèmes d’exploitation Windows (y compris les autres systèmes d’exploitation Windows 10) : 394806On all other Windows operating systems (including other Windows 10 operating systems): 394806
.NET Framework 4.7.NET Framework 4.7 Sur Windows 10 Creators Update : 460798On Windows 10 Creators Update: 460798
Sur tous les autres systèmes d’exploitation Windows (y compris les autres systèmes d’exploitation 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 Sur Windows 10 automne Creators Update et Windows Server, version 1709:461308On Windows 10 Fall Creators Update and Windows Server, version 1709: 461308
Sur tous les autres systèmes d’exploitation Windows (y compris les autres systèmes d’exploitation 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 Sur Windows 10 avril 2018 mise à jour et Windows Server, version 1803:461808On Windows 10 April 2018 Update and Windows Server, version 1803: 461808
Sur tous les systèmes d’exploitation Windows autres que Windows 10 avril 2018 Update et Windows Server, version 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 Sur Windows 10 mai 2019 mise à jour et Windows 10 novembre 2019 mise à jour : 528040On Windows 10 May 2019 Update and Windows 10 November 2019 Update: 528040
Sur Windows 10 mai 2020 mise à jour : 528372On Windows 10 May 2020 Update: 528372
Sur tous les autres systèmes d’exploitation Windows (y compris les autres systèmes d’exploitation Windows 10) : 528049On all other Windows operating systems (including other Windows 10 operating systems): 528049

Version minimaleMinimum version

Pour déterminer si une version minimale du .NET Framework est présente, utilisez la plus petite valeur de REG_DWORD de version pour cette version à partir du tableau précédent.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.

Par exemple, si votre application s’exécute sous .NET Framework 4,8 ou une version ultérieure, testez une valeur de REG_DWORD de mise en sortie supérieure ou égale à 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.

Version du .NET Framework.NET Framework version Valeur minimaleMinimum 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

Utiliser l’éditeur du RegistreUse Registry Editor

  1. À partir du menu Démarrer, choisissez Exécuter, entrez regedit, puis sélectionnez OK.From the Start menu, choose Run, enter regedit, and then select OK.

    Vous devez disposer d’informations d’identification d’administrateur pour exécuter regedit.You must have administrative credentials to run regedit.

  2. Dans l’éditeur du Registre, ouvrez la sous-clé suivante : HKEY_LOCAL_MACHINE \ logiciel \ Microsoft \ NET Framework installation \ NDP \ v4 \ Full.In the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Si la sous-clé Full est absente, alors .NET Framework 4.5 n’est pas installé ni une version ultérieure.If the Full subkey isn't present, then you don't have the .NET Framework 4.5 or later installed.

  3. Recherchez une entrée de REG_DWORD nommée Release.Check for a REG_DWORD entry named Release. S’il existe, .NET Framework 4,5 ou version ultérieure est installé.If it exists, then you have .NET Framework 4.5 or later installed. Sa valeur correspond à une version particulière du .NET Framework.Its value corresponds to a particular version of the .NET Framework. Dans l’illustration suivante, par exemple, la valeur de l’entrée de version est 528040, qui est la clé de mise en version de .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.

    Entrée de Registre pour le .NET Framework 4,5Registry entry for the .NET Framework 4.5

Utiliser PowerShell pour vérifier la version minimaleUse PowerShell to check for a minimum version

Utilisez les commandes PowerShell pour vérifier la valeur de l’entrée de publication de l’HKEY_LOCAL_MACHINE sous-clé complète de l' **installation du \ logiciel \ Microsoft \ NET Framework, \ 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.

Les exemples suivants vérifient la valeur de l’entrée Release pour déterminer si .NET Framework 4.6.2 ou une version ultérieure sont installés.The following examples check the value of the Release entry to determine whether the .NET Framework 4.6.2 or later is installed. Ce code retourne True s’il est installé et False dans le cas contraire.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

Interroger le registre à l’aide de codeQuery the registry using code

  1. Utilisez les RegistryKey.OpenBaseKey RegistryKey.OpenSubKey méthodes et pour accéder à la sous-clé complète du ** \ \ programme d’installation de HKEY_LOCAL_MACHINE logiciel Microsoft \ NET Framework, \ NDP \ \ v4** , dans le Registre 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.

    Important

    Si l’application que vous exécutez est 32 bits et s’exécute sous Windows 64 bits, les chemins d’accès au Registre sont différents de ceux indiqués précédemment.If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. Le registre 64 bits est disponible dans la sous-clé **HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ ** .The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. Par exemple, la sous-clé de Registre pour .NET Framework 4,5 est HKEY_LOCAL_MACHINE \ logiciel \ Wow6432Node \ Microsoft \ NET Framework Setup \ NDP \ v4 \ complet.For example, the registry subkey for .NET Framework 4.5 is HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full.

  2. Vérifiez la valeur REG_DWORD de version pour déterminer la version installée.Check the Release REG_DWORD value to determine the installed version. Pour être compatible, recherchez une valeur supérieure ou égale à la valeur listée dans le tableau des versions du .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’exemple suivant vérifie la valeur de l’entrée Release dans le Registre pour identifier les versions 4.5 et ultérieures du .NET Framework installées :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

Cet exemple suit la pratique recommandée concernant la vérification de version :This example follows the recommended practice for version checking:

  • Il vérifie si la valeur de l’entrée Release est supérieure ou égale à la valeur des clés de version connues.It checks whether the value of the Release entry is greater than or equal to the value of the known release keys.
  • Il effectue sa vérification en partant de la version la plus récente vers la version la plus ancienne.It checks in order from most recent version to earliest version.

Détection des .NET Framework 1,0 à 4,0Detect .NET Framework 1.0 through 4.0

Chaque version de .NET Framework de 1,1 à 4,0 est indiquée sous la forme d’une sous-clé dans HKEY_LOCAL_MACHINE \ logiciel \ 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. Le tableau suivant répertorie le chemin d’accès à chaque version de .NET Framework.The following table lists the path to each .NET Framework version. Pour la plupart des versions, il y a une valeur d' installation REG_DWORD de 1 pour indiquer que cette version est installée.For most versions, there's a Install REG_DWORD value of 1 to indicate this version is installed. Dans ces sous-clés, il y a également une valeur de REG_SZ de version qui contient une chaîne de version.In these subkeys, there's also a Version REG_SZ value that contains a version string.

Notes

La sous-clé d’installation du .NET Framework dans le chemin d’accès du registre ne commence pas par un point.The NET Framework Setup subkey in the registry path does not begin with a period.

Version du FrameworkFramework Version Sous-clé de RegistreRegistry Subkey ValeurValue
1.01.0 HKLM \ Software \ Microsoft \ . \Stratégie NETFramework \ v 1.0 \ 3705HKLM\Software\Microsoft\.NETFramework\Policy\v1.0\3705 Installer REG_SZ est égal à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 Installer REG_DWORD est égal à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 Installer REG_DWORD est égal à1Install REG_DWORD equals 1
3.03.0 HKLM \ Software \ Microsoft \ .NET Framework Setup \ NDP \ v 3.0 \ installationHKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup InstallSuccess REG_DWORD est égal à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 Installer REG_DWORD est égal à1Install REG_DWORD equals 1
Profil client 4,04.0 Client Profile HKLM \ Software \ Microsoft \ .NET Framework installation de \ NDP \ v4 \ clientHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client Installer REG_DWORD est égal à1Install REG_DWORD equals 1
Profil complet 4,04.0 Full Profile HKLM version du \ \ \ programme d’installation de Microsoft NET Framework, \ NDP \ v4 \ completHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full Installer REG_DWORD est égal à1Install REG_DWORD equals 1

Important

Si l’application que vous exécutez est 32 bits et s’exécute sous Windows 64 bits, les chemins d’accès au Registre sont différents de ceux indiqués précédemment.If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. Le registre 64 bits est disponible dans la sous-clé **HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ ** .The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. Par exemple, la sous-clé de Registre pour .NET Framework 3,5 est HKEY_LOCAL_MACHINE \ logiciel \ 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.

Notez que le chemin d’accès au registre de la sous-clé .NET Framework 1,0 est différent des autres.Notice that the registry path to the .NET Framework 1.0 subkey is different from the others.

Utiliser l’éditeur du Registre (versions antérieures de l’infrastructure)Use Registry Editor (older framework versions)

  1. À partir du menu Démarrer, choisissez Exécuter, entrez regedit, puis sélectionnez OK.From the Start menu, choose Run, enter regedit, and then select OK.

    Vous devez disposer d’informations d’identification d’administrateur pour exécuter regedit.You must have administrative credentials to run regedit.

  2. Ouvrez la sous-clé qui correspond à la version que vous souhaitez vérifier.Open the subkey that matches the version you want to check. Utilisez le tableau de la section détecter les .NET Framework 1,0 à 4,0 .Use the table in the Detect .NET Framework 1.0 through 4.0 section.

    L’illustration suivante montre la sous-clé et sa valeur de version pour .NET Framework 3,5.The following figure shows the subkey and its Version value for .NET Framework 3.5.

    Entrée de Registre pour le .NET Framework 3,5.The registry entry for the .NET Framework 3.5.

Interroger le registre à l’aide de code (versions antérieures du Framework)Query the registry using code (older framework versions)

Utilisez la Microsoft.Win32.RegistryKey classe pour accéder à la sous-clé ** \ \ NDP du \ programme d’installation \ de HKEY_LOCAL_MACHINE logiciel Microsoft NET Framework** dans le Registre Windows.Use the Microsoft.Win32.RegistryKey class to access the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP subkey in the Windows registry.

Important

Si l’application que vous exécutez est 32 bits et s’exécute sous Windows 64 bits, les chemins d’accès au Registre sont différents de ceux indiqués précédemment.If the app you're running is 32-bit and running in 64-bit Windows, the registry paths will be different than previously listed. Le registre 64 bits est disponible dans la sous-clé **HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ ** .The 64-bit registry is available in the HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ subkey. Par exemple, la sous-clé de Registre pour .NET Framework 3,5 est HKEY_LOCAL_MACHINE \ logiciel \ 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.

L’exemple suivant recherche les versions .NET Framework 1 à 4 qui sont installées :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

Identifier les versions du CLRFind CLR versions

La .NET Framework CLR installée avec .NET Framework est gérée séparément.The .NET Framework CLR installed with .NET Framework is versioned separately. Il existe deux façons de détecter la version du .NET Framework CLR :There are two ways to detect the version of the .NET Framework CLR:

  • Outil Clrver.exeThe Clrver.exe tool

    Utilisez l' outil CLR version (Clrver.exe) pour déterminer quelles versions du CLR sont installées sur un ordinateur.Use the CLR Version tool (Clrver.exe) to determine which versions of the CLR are installed on a computer. Ouvrez le invite de commandes développeur pour Visual Studio et entrez clrver .Open the Developer Command Prompt for Visual Studio and enter clrver.

    Exemple de sortie :Sample output:

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

    Important

    Pour .NET Framework 4,5 et versions ultérieures, n’utilisez pas la Environment.Version propriété pour détecter la version du CLR.For .NET Framework 4.5 and later versions, don't use the Environment.Version property to detect the version of the CLR. Au lieu de cela, interrogez le registre comme décrit dans détecter les .NET Framework 4,5 et versions ultérieures.Instead, query the registry as described in Detect .NET Framework 4.5 and later versions.

    1. Interrogez la propriété Environment.Version pour récupérer un objet Version.Query the Environment.Version property to retrieve a Version object.

      L’objet System.Version retourné identifie la version du runtime qui est en train d’exécuter le code.The returned System.Version object identifies the version of the runtime that's currently executing the code. Il ne retourne pas les versions d’assembly ni d’autres versions du runtime susceptibles d’avoir été installées sur l’ordinateur.It doesn't return assembly versions or other versions of the runtime that may have been installed on the computer.

      Pour les versions .NET Framework 4, 4,5, 4.5.1 et 4.5.2, la représentation sous forme de chaîne de l' Version objet retourné se présente sous la forme 4.0.30319.* xxxxx*, où xxxxx est inférieur à 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. Pour .NET Framework 4,6 et versions ultérieures, il se présente sous la forme 4.0.30319.42000.For .NET Framework 4.6 and later versions, it has the form 4.0.30319.42000.

    2. Une fois que vous disposez de l’objet de version , interrogez-le comme suit :After you have the Version object, query it as follows:

      • Pour l’identificateur de la version majeure (par exemple, 4 pour la version 4.0), utilisez la propriété Version.Major.For the major release identifier (for example, 4 for version 4.0), use the Version.Major property.

      • Pour l’identificateur de la version mineure (par exemple, 0 pour la version 4.0), utilisez la propriété Version.Minor.For the minor release identifier (for example, 0 for version 4.0), use the Version.Minor property.

      • Pour la chaîne de la version entière (par exemple, 4.0.30319.18010), utilisez la méthode Version.ToString.For the entire version string (for example, 4.0.30319.18010), use the Version.ToString method. Cette méthode retourne une valeur unique qui reflète la version du runtime qui est en train d’exécuter le code.This method returns a single value that reflects the version of the runtime that's executing the code. Elle ne retourne pas les versions d’assembly ni d’autres versions du runtime susceptibles d’être installées sur l’ordinateur.It doesn't return assembly versions or other runtime versions that may be installed on the computer.

    L’exemple suivant utilise la propriété Environment.Version pour récupérer les informations de version du 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
    
    

Voir aussiSee also