Une question similaire a été posée ici , mais elle était spécifique à .NET 3.5. Plus précisément, je recherche les éléments suivants:
- Quelle est la bonne façon de déterminer quelles versions de .NET Framework et Service Packs sont installés?
- Existe-t-il une liste de clés de registre pouvant être utilisées?
- Existe-t-il des dépendances entre les versions de Framework?
.net
installation
version-detection
Scott Dorman
la source
la source
Réponses:
Le registre est le moyen officiel de détecter si une version spécifique du Framework est installée.
Quelles clés de registre sont nécessaires en fonction de la version du Framework que vous recherchez:
En général, vous recherchez:
sauf pour .NET 1.0, où la valeur est une chaîne (
REG_SZ
) plutôt qu'un nombre (REG_DWORD
).La détermination du niveau du Service Pack suit un modèle similaire:
Comme vous pouvez le voir, déterminer le niveau de SP pour .NET 1.0 change si vous exécutez sur Windows Media Center ou Windows XP Tablet Edition. Encore une fois, .NET 1.0 utilise une valeur de chaîne tandis que tous les autres utilisent un DWORD.
Pour .NET 1.0, la valeur de chaîne à l'une de ces clés a le format #, #, ####, #. Le dernier # est le niveau du Service Pack.
Bien que je ne l'ai pas explicitement demandé, si vous souhaitez connaître le numéro de version exact du Framework, vous utiliserez ces clés de registre:
Encore une fois, .NET 1.0 utilise une valeur de chaîne tandis que tous les autres utilisent un DWORD.
Notes complémentaires
pour .NET 1.0, la valeur de chaîne à l'une de ces clés a un format de
#,#,####,#
. La#,#,####
partie de la chaîne est la version Framework.pour .NET 1.1, nous utilisons le nom de la clé de registre elle-même, qui représente le numéro de version.
Enfin, si vous examinez les dépendances, .NET 3.0 ajoute des fonctionnalités supplémentaires à .NET 2.0, donc .NET 2.0 et .NET 3.0 doivent tous deux être évalués comme étant installés pour indiquer correctement que .NET 3.0 est installé. De même, .NET 3.5 ajoute des fonctionnalités supplémentaires à .NET 2.0 et .NET 3.0, donc .NET 2.0, .NET 3.0 et .NET 3. doivent tous être évalués comme étant installés pour indiquer correctement que .NET 3.5 est installé.
.NET 4.0 installe une nouvelle version du CLR (CLR version 4.0) qui peut s'exécuter côte à côte avec CLR 2.0.
Mise à jour pour .NET 4.5
Il n'y aura pas de
v4.5
clé dans le registre si .NET 4.5 est installé. Au lieu de cela, vous devez vérifier si laHKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full
clé contient une valeur appeléeRelease
. Si cette valeur est présente, .NET 4.5 est installé, sinon il ne l'est pas. Plus de détails peuvent être trouvés ici et ici .la source
Il existe une réponse officielle de Microsoft à cette question dans l'article suivant de la base de connaissances:
ID d'article: 318785 - Dernière révision: 7 novembre 2008 - Révision: 20.1 Comment déterminer quelles versions du .NET Framework sont installées et si les Service Packs ont été appliqués
Malheureusement, cela ne semble pas fonctionner, car la version mscorlib.dll dans le répertoire 2.0 a une version 2.0, et il n'y a pas de version mscorlib.dll dans les répertoires 3.0 ou 3.5 même si 3.5 SP1 est installé ... pourquoi la réponse officielle de Microsoft serait-elle si mal informée?
la source
La version bêta de Framework 4 s'installe sur une clé de registre différente.
la source
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP", true)
pourRegistry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP")
éviter une exception de sécurité sur les utilisateurs non administrateurs.Je voulais détecter la présence de .NET version 4.5.2 installée sur mon système, et je n'ai trouvé aucune meilleure solution que ASoft .NET Version Detector .
Instantané de cet outil montrant différentes versions de .NET:
la source
Énumérer les sous-clés de
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP
. Chaque sous-clé est une version .NET . Il doit avoir uneInstall=1
valeur s'il est présent sur la machine, une valeur SP qui affiche le Service Pack et uneMSI=1
valeur s'il a été installé à l'aide d'un MSI. (.NET 2.0 sur Windows Vista n'a pas le dernier par exemple, car il fait partie du système d'exploitation.)la source
Pour un système d'exploitation 64 bits, le chemin d'accès serait:
la source
Wow6432Node
clé de registre fait partie du réflecteur de registre WOW64, qui reflète certaines clés et valeurs entre les vues de registre 64 bits et 32 bits. Il ne devrait pas être nécessaire d'accéder directement à cette clé car le registre gère automatiquement la redirection et la mise en miroir.Mise à jour pour .NET 4.5.1
Maintenant que .NET 4.5.1 est disponible, la valeur réelle de la clé nommée Release dans le registre doit être vérifiée, pas seulement son existence. Une valeur de 378758 signifie que .NET Framework 4.5.1 est installé. Cependant, comme décrit ici, cette valeur est 378675 sous Windows 8.1.
la source
Il existe un outil GUI disponible, ASoft .NET Version Detector , qui s'est toujours révélé très fiable. Il peut créer des fichiers XML en spécifiant le nom de fichier de la sortie XML sur la ligne de commande.
Vous pouvez l'utiliser pour l'automatisation. Il s'agit d'un petit programme, écrit dans un langage non dépendant de NET et ne nécessitant pas d'installation.
la source
J'avais besoin de savoir quelle version du framework .NET j'avais sur mon ordinateur, et tout ce que j'ai fait était d'aller dans le panneau de configuration et de sélectionner l'option "Désinstaller un programme". Après cela, j'ai trié les programmes par nom et trouvé le profil client Microsoft .NET Framework 4.
la source
Voici un script PowerShell pour obtenir les versions de framework .NET installées
Il a été rédigé sur la base de Comment: déterminer quelles versions de .NET Framework sont installées . Veuillez utiliser la fonction Get-FrameworkVersion () pour obtenir des informations sur les versions de framework .NET installées.
la source
En utilisant la bibliothèque Signum.Utilities de SignumFramework (que vous pouvez utiliser de manière autonome), vous pouvez l'obtenir facilement et sans vous occuper du registre par vous-même:
la source
Voir Comment: déterminer les versions de .NET Framework installées (MSDN).
MSDN propose un exemple de fonction qui semble faire le travail pour la version 1-4. Selon l'article, la sortie de la méthode est:
Notez que pour les "versions 4.5 et supérieures", il existe une autre fonction.
la source
Sous Windows 7 (cela devrait également fonctionner pour Windows 8, mais je ne l'ai pas testé):
Accédez à une invite de commande
Étapes pour accéder à une invite de commande:
Dans cmd, tapez cette commande
Cela donne la dernière version de NET Framework installée.
On peut également essayer Raymond.cc Utilties pour la même chose.
la source
cmd
me donneERROR: Description = Invalid namespace
.ERROR: Description = Invalid namespace