Comment : déterminer les versions .NET Framework installées

.NET Framework (current version)
 

Les utilisateurs peuvent installer et exécuter plusieurs versions de .NET Framework sur leurs ordinateurs. 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. Notez que .NET Framework comporte deux principaux composants, dont les versions sont définies séparément :

  • Un jeu d'assemblys, qui correspondent aux collections de types et de ressources qui fournissent les fonctionnalités de vos applications. .NET Framework et les assemblys partagent le même numéro de version.

  • Le Common Language Runtime (CLR), qui gère et exécute le code de votre application. Le CLR est identifié par son propre numéro de version (voir Versions et dépendances).

Pour obtenir la liste précise des versions de .NET Framework installées sur un ordinateur, vous pouvez consulter le Registre ou l'interroger en utilisant du code :

Affichage du Registre (versions 1 à 4)
Affichage du Registre (version 4.5 et ultérieures)
Utilisation de code pour interroger le Registre (versions 1 à 4)
Utilisation de code pour interroger le Registre (version 4.5 et ultérieures)

Pour rechercher la version CLR, vous pouvez utiliser un outil ou du code :

Utilisation de l’outil Clrver
Utilisation de code pour interroger la classe System.Environment

Pour plus d’informations sur la détection des mises à jour installées pour chaque version de .NET Framework, consultez Comment : déterminer les mises à jour .NET Framework installées. Pour plus d'informations sur l'installation de .NET Framework, consultez le guide d'installation.

Pour déterminer les versions de .NET Framework en affichant le Registre (.NET Framework 1-4)

  1. Dans le menu Démarrer, choisissez Exécuter.

  2. Dans la zone Ouvrir, entrez regedit.exe.

    Vous devez disposer d'informations d'identification d'administration pour exécuter regedit.exe.

  3. Dans l'Éditeur du Registre, ouvrez la sous-clé suivante :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

    Les versions installées sont répertoriées sous la sous-clé NDP. Le numéro de version est stocké dans l'entrée Version. Pour .NET Framework 4, l'entrée Version se trouve sous la sous-clé Client ou Full (sous NDP), ou sous les deux sous-clés.

    System_CAPS_ICON_note.jpg Remarque

    Le dossier d'installation « NET Framework Setup » dans le Registre ne commence pas par un point.

Pour déterminer les versions de .NET Framework en affichant le Registre (.NET Framework 4.5 et ultérieur)

  1. Dans le menu Démarrer, choisissez Exécuter.

  2. Dans la zone Ouvrir, entrez regedit.exe.

    Vous devez disposer d'informations d'identification d'administration pour exécuter regedit.exe.

  3. Dans l'Éditeur du Registre, ouvrez la sous-clé suivante :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full

    Notez que le chemin d'accès à la sous-clé Full inclut le Net Framework de la sous-clé plutôt que .NET Framework.

    System_CAPS_ICON_note.jpg Remarque

    Si la sous-clé Full n'est pas disponible, .NET Framework 4.5 ou version ultérieure n'est pas installé.

    Recherchez une valeur DWORD nommée Release. L'existence de la valeur DWORD Release indique que .NET Framework 4.5 ou une version plus récente a été installé sur cet ordinateur.

    L'entrée du registre du .NET Framework 4.5.

    La valeur du paramètre DWORD Release indique quelle version de .NET Framework est installée.

    Valeur du paramètre DWORD ReleaseVersion
    378389.NET Framework 4.5
    378675.NET Framework 4.5.1 installé avec Windows 8.1 ou Windows Server 2012 R2
    378758.NET Framework 4.5.1 installé sur Windows 8, Windows 7 SP1, ou Windows Vista SP2
    379893.NET Framework 4.5.2
    Sur les systèmes Windows 10 : 393295

    Sur toutes les autres versions de système d'exploitation : 393297
    .NET Framework 4.6
    Sur les systèmes Windows intégrant la mise à jour du 10 novembre : 394254

    Sur toutes les autres versions de système d'exploitation : 394271
    .NET Framework 4.6.1

Pour déterminer les versions de .NET Framework en interrogeant le Registre à l'aide de code (.NET Framework 1-4)

  • Utilisez la classe Microsoft.Win32.RegistryKey pour accéder à la sous-clé Software\Microsoft\NET Framework Setup\NDP\ sous HKEY_LOCAL_MACHINE dans le Registre de Windows.

    Le code ci-dessous est un exemple de cette requête.

    System_CAPS_ICON_note.jpg Remarque

    Ce code ne montre pas comment détecter le .NET Framework 4.5 ou version ultérieure. Examinez la valeur de DWORD Release pour détecter ces versions, comme décrit dans la section précédente.

    using System;
    using Microsoft.Win32;
    

        private static void GetVersionFromRegistry()
        {
             // Opens the registry key for the .NET Framework entry.
                using (RegistryKey ndpKey = 
                    RegistryKey.OpenRemoteBaseKey(RegistryHive.LocalMachine, "").
                    OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
                {
                    // As an alternative, if you know the computers you will query are running .NET Framework 4.5 
                    // or later, you can use:
                    // using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
                    // RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
                foreach (string versionKeyName in ndpKey.GetSubKeyNames())
                {
                    if (versionKeyName.StartsWith("v"))
                    {
    
                        RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);
                        string name = (string)versionKey.GetValue("Version", "");
                        string sp = versionKey.GetValue("SP", "").ToString();
                        string install = versionKey.GetValue("Install", "").ToString();
                        if (install == "") //no install info, must be later.
                            Console.WriteLine(versionKeyName + "  " + name);
                        else
                        {
                            if (sp != "" && install == "1")
                            {
                                Console.WriteLine(versionKeyName + "  " + name + "  SP" + sp);
                            }
    
                        }
                        if (name != "")
                        {
                            continue;
                        }
                        foreach (string subKeyName in versionKey.GetSubKeyNames())
                        {
                            RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
                            name = (string)subKey.GetValue("Version", "");
                            if (name != "")
                                sp = subKey.GetValue("SP", "").ToString();
                            install = subKey.GetValue("Install", "").ToString();
                            if (install == "") //no install info, must be later.
                                Console.WriteLine(versionKeyName + "  " + name);
                            else
                            {
                                if (sp != "" && install == "1")
                                {
                                    Console.WriteLine("  " + subKeyName + "  " + name + "  SP" + sp);
                                }
                                else if (install == "1")
                                {
                                    Console.WriteLine("  " + subKeyName + "  " + name);
                                }
                            }
                        }
                    }
                }
            }
        }
    

    Cet exemple produit un résultat semblable au suivant :

    
    v2.0.50727  2.0.50727.4016  SP2 v3.0  3.0.30729.4037  SP2 v3.5  3.5.30729.01  SP1 v4 Client  4.0.30319 Full  4.0.30319  
    
    

Pour déterminer les versions de .NET Framework en interrogeant le Registre à l'aide de code (.NET Framework 4.5 et ultérieur)

  1. L'existence de la valeur DWORD Release indique que .NET Framework 4.5 ou une version ultérieure a été installé sur un ordinateur. La valeur du mot clé indique la version installée. Pour vérifier ce mot clé, utilisez les méthodes OpenBaseKey et OpenSubKey de la classe Microsoft.Win32.RegistryKey pour accéder à la sous-clé Software\Microsoft\NET Framework Setup\NDP\v4\Full, sous HKEY_LOCAL_MACHINE, dans le Registre Windows.

  2. Vérifiez la valeur du mot clé Release pour déterminer la version installée. Pour une compatibilité ascendante, vérifiez que votre valeur est supérieure ou égale à celles répertoriées dans le tableau ci-dessous. Voici les versions de .NET Framework et les mots clés Release associés.

    VersionValeur du paramètre DWORD Release
    .NET Framework 4.5378389
    .NET Framework 4.5.1 installé avec Windows 8.1378675
    .NET Framework 4.5.1 installé sur Windows 8, Windows 7 SP1, ou Windows Vista SP2378758
    .NET Framework 4.5.2379893
    .NET Framework 4.6 installé avec Windows 10393295
    .NET Framework 4.6 installé sur toutes les autres versions de système d'exploitation Windows393297
    .NET Framework 4.6.1 installé sur Windows 10394254
    .NET Framework 4.6.1 installé sur toutes les autres versions de système d'exploitation Windows394271

    Voici un exemple de recherche d'une valeur supérieure ou égale aux valeurs de mot clé pour chacune des versions :

    using System;
    using Microsoft.Win32;
    

    private static void Get45or451FromRegistry()
    {
    	using (RegistryKey ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\\Microsoft\\NET Framework Setup\\NDP\\v4\\Full\\")) {
    		if (ndpKey != null && ndpKey.GetValue("Release") != null) {
    			Console.WriteLine("Version: " + CheckFor45DotVersion((int) ndpKey.GetValue("Release")));
    		}
          else {
             Console.WriteLine("Version 4.5 or later is not detected.");
          } 
    	}
    }
    

    // Checking the version using >= will enable forward compatibility, 
    // however you should always compile your code on newer versions of
    // the framework to ensure your app works the same.
    private static string CheckFor45DotVersion(int releaseKey)
    {
       if (releaseKey >= 393295) {
          return "4.6 or later";
       }
       if ((releaseKey >= 379893)) {
    		return "4.5.2 or later";
    	}
    	if ((releaseKey >= 378675)) {
    		return "4.5.1 or later";
    	}
    	if ((releaseKey >= 378389)) {
    		return "4.5 or later";
    	}
    	// This line 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";
    }
    

    Cet exemple produit un résultat semblable au suivant :

    Version: 4.5.1 or later  
    
    

Pour déterminer la version actuelle du runtime à l'aide de l'outil Clrver

  • Utilisez l'outil de version CLR (Clrver.exe) pour déterminer quelles versions du CLR (Common Language Runtime) sont installées sur un ordinateur.

    Dans l’invite de commandes Visual Studio, entrez clrver. Cette commande produit un résultat similaire au suivant :

    Versions installed on the machine: v2.0.50727 v4.0.30319  
    
    

    Pour plus d’informations sur l’utilisation de cet outil, consultez Clrver.exe (CLR Version Tool).

Pour rechercher la version actuelle du runtime en interrogeant la classe Environment dans le code

  • Interrogez la propriété Environment.Version pour récupérer un objet Version identifiant la version du runtime qui exécute actuellement le code. Vous pouvez utiliser la propriété Version.Major pour obtenir l'identificateur de la version principale (par exemple, « 4 » pour la version 4,0), la propriété Version.Minor pour obtenir l'identificateur de la version secondaire (par exemple, « 0 » pour la version 4,0) ou la méthode Object.ToString pour obtenir la chaîne de version entière (par exemple, « 4.0.30319.18010 », comme indiqué dans le code suivant). Cette propriété retourne une valeur unique qui reflète la version du runtime exécutant actuellement le code. Elle ne retourne pas les versions d'assembly ou les autres versions du runtime qui ont pu être installées sur l'ordinateur.

    Pour .NET Framework versions 4, 4.5, 4.5.1 et 4.5.2, la propriété Environment.Version retourne un objet Version dont la représentation sous forme de chaîne se présente sous la forme 4.0.30319.xxxxx. Pour .NET Framework 4.6, il se présente sous la forme 4.0.30319.42000.

    Voici un exemple illustrant l'interrogation de la propriété Environment.Version pour obtenir les informations de version du runtime :

    using System;
    using Microsoft.Win32;
    

        private static void GetVersionFromEnvironment()
        {
            Console.WriteLine("Version: " + Environment.Version.ToString());
    
        }
    

    Cet exemple produit un résultat semblable au suivant :

    Version: 4.0.30319.18010  
    
    

Comment : déterminer les mises à jour .NET Framework installées
Guide d'installation
Versions et dépendances

Afficher: