Procédure : 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 .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.

  • 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. Le CLR est identifié par son propre numéro de version (consultez Versions et dépendances).The CLR is identified by its own version number (see Versions and Dependencies).

Notes

Chaque nouvelle version du .NET Framework conserve les fonctionnalités des versions antérieures et en ajoute de nouvelles.Each new version of the .NET Framework retains features from the previous versions and adds new features. Vous pouvez charger plusieurs versions du .NET Framework sur un seul ordinateur en même temps, ce qui signifie que vous pouvez installer le .NET Framework sans avoir à désinstaller les versions antérieures.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. En règle générale, il est préférable de ne pas désinstaller les versions antérieures du .NET Framework, car une application que vous utilisez peut dépendre d’une version spécifique et risquer de dysfonctionner si cette version est supprimée.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.

Il existe une différence entre la version du .NET Framework et la version du CLR :There is a difference between the .NET Framework version and the CLR version:

  • La version du .NET Framework dépend du jeu d’assemblys qui constituent la bibliothèque de classes du .NET Framework.The .NET Framework version is based on the set of assemblies that form the .NET Framework class library. 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.
  • La version du CLR dépend du runtime sur lequel les applications .NET Framework s’exécutent.The CLR version is based on the runtime on which .NET Framework applications execute. 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, le CLR version 4.0.30319.xxxxx prend en charge les versions 4 à 4.5.2 du .NET Framework, tandis que le CLR version 4.0.30319.42000 prend en charge toutes les versions du .NET Framework à partir de .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.

Pour plus d’informations sur les versions, consultez Versions et dépendances du .NET Framework.For more information about versions, see .NET Framework versions and dependencies.

Pour obtenir la liste des versions du .NET Framework installées sur un ordinateur, accédez au Registre.To get a list of the .NET Framework versions installed on a computer, you access the registry. Vous pouvez utiliser l’Éditeur du Registre pour voir le Registre ou utiliser du code pour l’interroger :You can either use the Registry Editor to view the registry or use code to query it:

Pour obtenir la liste des versions du CLR installées sur un ordinateur, utilisez un outil ou du code :To get a list of the CLR versions installed on a computer, use a tool or code:

Pour plus d’informations sur la détection des mises à jour installées pour chaque version de .NET Framework, consultez Guide pratique pour déterminer les mises à jour .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.

Identifier les versions les plus récentes du .NET Framework (4.5 et versions ultérieures)Find newer .NET Framework versions (4.5 and later)

Identifier les versions 4.5 et ultérieures de .NET Framework dans le RegistreFind .NET Framework versions 4.5 and later in the registry

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

    Notes

    Le dossier NET Framework Setup du Registre ne commence pas par un point.The NET Framework Setup folder in the registry does not begin with a period.

  3. Recherchez une entrée DWORD nommée Release.Check for a DWORD entry named Release. Si elle existe, alors .NET Framework 4.5 ou des versions ultérieures sont installés.If it exists, then you have .NET Framework 4.5 or later versions installed. Sa valeur est une clé de version correspondant à une version particulière du .NET Framework.Its value is a release key that corresponds to a particular version of the .NET Framework. Dans l’illustration suivante, par exemple, la valeur de l’entrée Release est 378389, à savoir la clé de version de .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.

    Entrée de Registre de .NET Framework 4.5Registry entry for the .NET Framework 4.5

Le tableau suivant présente la valeur DWORD Version sur les différents systèmes d’exploitation pour .NET Framework 4.5 et les versions ultérieures.The following table lists the value of the Release DWORD on individual operating systems for .NET Framework 4.5 and later versions.

Important

Le tableau suivant liste seulement les clés des versions publiées du .NET Framework.The following table lists the keys of released versions of the .NET Framework only. Il ne liste pas les clés des versions préliminaires ou des préversions.It doesn't list the keys of preview or pre-release versions.

Version du .NET Framework.NET Framework version Valeur du paramètre DWORD ReleaseValue of the Release DWORD
.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 Sous 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 Sous 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 10 intégrant la mise à jour de 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 d’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 d’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 Fall 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 d’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 avec la mise à jour d’avril 2018 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 la mise à jour d’avril 2018 de Windows 10 et la version 1803 de Windows Server : 461814On all Windows operating systems other than Windows 10 April 2018 Update and Windows Server, version 1803: 461814

Vous pouvez utiliser ces valeurs de différentes manières :You can use these values as follows:

  • Pour déterminer si une certaine version de .NET Framework est installée sur une certaine version du système d’exploitation Windows, regardez si la valeur DWORD Version est égale à la valeur indiquée dans le tableau.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. Par exemple, pour déterminer si .NET Framework 4.6 est présent sur un système Windows 10, regardez si la valeur Version est égale à 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.

  • Pour déterminer s’il existe une version minimale de .NET Framework, utilisez la plus petite valeur DWORD Version de cette version.To determine whether a minimum version of the .NET Framework is present, use the smaller RELEASE DWORD value for that version. Par exemple, si votre application s’exécute sur .NET Framework 4.6 ou une version ultérieure, recherchez une valeur DWORD Version supérieure ou égale à 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. Vous trouverez un tableau qui présente uniquement la valeur DWORD Version minimale pour chaque version de .NET Framework dans Valeurs DWORD Version minimales pour .NET Framework 4.5 et les versions ultérieures.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.

  • Pour tester plusieurs versions, commencez par rechercher une valeur supérieure ou égale à la plus petite valeur DWORD de la dernière version de .NET Framework, puis comparez-la avec la plus petite valeur DWORD de chacune des versions antérieures, en allant de la plus récente à la plus ancienne.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. Par exemple, si votre application exige .NET Framework 4.7 ou une version ultérieure et que vous souhaitez identifier la version installée de .NET Framework, commencez par rechercher une valeur DWORD Version supérieure ou égale à 461808 (la plus petite valeur DWORD pour .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). Ensuite, comparez la valeur DWORD Version avec la plus petite valeur de chaque version ultérieure de .NET Framework.Then compare the RELEASE DWORD value with the smaller value for each later .NET Framework version. Vous trouverez un tableau qui présente uniquement la valeur DWORD Version minimale pour chaque version de .NET Framework dans Valeurs DWORD Version minimales pour .NET Framework 4.5 et les versions ultérieures.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.

Identifier les versions 4.5 et ultérieures de .NET Framework avec du codeFind .NET Framework versions 4.5 and later with code

  1. Utilisez les méthodes RegistryKey.OpenBaseKey et RegistryKey.OpenSubKey pour accéder à la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full 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.

    L’existence de l’entrée DWORD Release dans la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full indique que .NET Framework 4.5 ou une version ultérieure sont installés sur un ordinateur.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. Vérifiez la valeur de l’entrée Release pour déterminer la version installée.Check the value of the Release entry 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 > 461814)
            return "4.7.2 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 > 461814 Then
         Return "4.7.2 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.

Rechercher une version minimale exigée du .NET Framework (4.5 ou ultérieure) avec PowerShellCheck for a minimum-required .NET Framework version (4.5 and later) with PowerShell

  • Utilisez des commandes PowerShell pour vérifier la valeur de l’entrée Release de la sous-clé 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.

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.

# 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

Pour rechercher une autre version minimale exigée du .NET Framework, remplacez 394802 dans ces exemples par une valeur Release indiquée dans le tableau des versions du .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.

Identifier des versions antérieures du .NET Framework (1–4)Find older .NET Framework versions (1–4)

Identifier les versions 1–4 du .NET Framework dans le RegistreFind .NET Framework versions 1–4 in the registry

  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\SOFTWARE\Microsoft\NET Framework Setup\NDP :In the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:

    • Pour les versions 1.1 à 3.5 du .NET Framework, chaque version installée est listée en tant que sous-clé sous la sous-clé 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. Par exemple, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5.For example, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5. Le numéro de version est stocké sous forme de valeur dans l’entrée Version de la sous-clé de version.The version number is stored as a value in the version subkey's Version entry.

    • Pour .NET Framework 4, l’entrée Version se trouve sous la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client, sous la sous-clé HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\NET Framework Setup\NDP\v4.0\Full ou sous les deux sous-clés.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.

    Notes

    Le dossier d’installation NET Framework Setup dans le Registre ne commence pas par un point.The NET Framework Setup folder in the registry does not begin with a period.

    La figure suivante illustre la sous-clé et son entrée Version pour .NET Framework 3.5.The following figure shows the subkey and its Version entry for the .NET Framework 3.5.

    Entrée de Registre pour .NET Framework 3.5.The registry entry for the .NET Framework 3.5.

Identifier les versions 1–4 du .NET Framework avec du codeFind .NET Framework versions 1–4 with code

  • Utilisez la classe Microsoft.Win32.RegistryKey pour accéder à la sous-clé HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP 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.

L’exemple suivant identifie les versions .NET Framework 1–4 installées :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

Identifier les versions du CLRFind CLR versions

Identifier la version actuelle du CLR avec Clrver.exeFind the current CLR version with Clrver.exe

Utilisez l’outil de version CLR (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:

Identifier la version actuelle du CLR avec la classe EnvironmentFind the current CLR version with the Environment class

Important

Pour .NET Framework 4.5 et ultérieur, n’utilisez pas la propriété Environment.Version pour détecter la version du CLR.For the .NET Framework 4.5 and later versions, don't use the Environment.Version property to detect the version of the CLR. Interrogez plutôt le Registre comme décrit dans Identifier les versions 4.5 et ultérieures du .NET Framework avec du code.Instead, query the registry as described in Find .NET Framework versions 4.5 and later with code.

  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 4, 4.5, 4.5.1 et 4.5.2 du .NET Framework, la représentation sous forme de chaîne de l’objet Version retourné a la forme 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. Pour les versions 4.6 et ultérieures du .NET Framework, la forme est 4.0.30319.42000.For the .NET Framework 4.6 and later versions, it has the form 4.0.30319.42000.

  2. Une fois que vous avez l’objet 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