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
Susan Sarandonoriginal
2025-01-15 10:31:46986parcourir

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>

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>

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!

Déclaration:
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