Maison > développement back-end > C++ > Comment puis-je déterminer avec précision la version du .NET Framework installée ?

Comment puis-je déterminer avec précision la version du .NET Framework installée ?

Susan Sarandon
Libérer: 2025-01-15 10:31:46
original
1033 Les gens l'ont consulté

How Can I Accurately Determine the Installed .NET Framework Version?

Un moyen plus simple de déterminer la version du .NET Framework

La méthode

Environment.Version() n'est souvent pas assez précise pour déterminer avec précision la version du .NET Framework, notamment lors de la détection de la version 3.5 SP 1. Cet article explore une méthode alternative pour exploiter les valeurs de registre pour fournir une solution plus fiable.

Obtenir des informations sur la version

Pour les versions 1 à 4 de .NET, la récupération des informations sur le framework et le service pack à partir du registre implique les étapes suivantes :

  1. Ouvrez la clé de registre « SOFTWAREMicrosoftNET Framework SetupNDP ».
  2. Parcourez les noms de sous-clés, qui représentent les versions installées.
  3. Extrayez la version du framework en supprimant le « v » au début du nom de la sous-clé.
  4. Ouvrez la sous-clé correspondant à la version la plus élevée et récupérez la valeur "SP" pour déterminer le niveau du service pack.

Exemple de code des versions .NET 1-4 :

<code class="language-csharp">using Microsoft.Win32;
using System.Globalization;

RegistryKey installed_versions = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP");
string[] version_names = installed_versions.GetSubKeyNames();
double Framework = Convert.ToDouble(version_names[version_names.Length - 1].Remove(0, 1), CultureInfo.InvariantCulture);
int SP = Convert.ToInt32(installed_versions.OpenSubKey(version_names[version_names.Length - 1]).GetValue("SP", 0));</code>
Copier après la connexion

Version .NET 4.5 prise en charge

Pour .NET 4.5 et supérieur, la documentation officielle de Microsoft propose une approche différente :

  1. Résolvez la valeur « Release » dans la clé de registre « SOFTWAREMicrosoftNET Framework SetupNDPv4Full ».
  2. Utilisez cette valeur pour déterminer la version correspondante en fonction d'une portée prédéfinie.

Exemple de code de la version .NET 4.5 :

<code class="language-csharp">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\")) {
        int releaseKey = Convert.ToInt32(ndpKey.GetValue("Release"));
        if (true) {
            Console.WriteLine("Version: " + CheckFor45DotVersion(releaseKey));
        }
    }
}


...


private static string CheckFor45DotVersion(int releaseKey)
{
    if (releaseKey >= 528040) {
        return "4.8 或更高版本";
    }
    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 >= 393273) {
        return "4.6 RC 或更高版本";
    }
    if ((releaseKey >= 379893)) {
        return "4.5.2 或更高版本";
    }
    if ((releaseKey >= 378675)) {
        return "4.5.1 或更高版本";
    }
    if ((releaseKey >= 378389)) {
        return "4.5 或更高版本";
    }
    return "未检测到 4.5 或更高版本";
}</code>
Copier après la connexion

Ces méthodes devraient déterminer plus précisément la version installée de .NET Framework, y compris la prise en charge de 3.5 SP 1 et versions ultérieures.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal