Heim >Backend-Entwicklung >C++ >Wie kann ich die installierte .NET Framework-Version genau bestimmen?

Wie kann ich die installierte .NET Framework-Version genau bestimmen?

Susan Sarandon
Susan SarandonOriginal
2025-01-15 10:31:46986Durchsuche

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

Eine einfachere Möglichkeit, die .NET Framework-Version zu ermitteln

Die Methode

Environment.Version() ist oft nicht genau genug, um die .NET Framework-Version genau zu bestimmen, insbesondere wenn die Version 3.5 SP 1 erkannt wird. In diesem Artikel wird eine alternative Methode zur Nutzung von Registrierungswerten untersucht, um eine zuverlässigere Lösung bereitzustellen.

Versionsinformationen abrufen

Für die .NET-Versionen 1–4 umfasst das Abrufen von Framework- und Service Pack-Informationen aus der Registrierung die folgenden Schritte:

  1. Öffnen Sie den Registrierungsschlüssel „SOFTWAREMicrosoftNET Framework SetupNDP“.
  2. Durchlaufen Sie die Unterschlüsselnamen, die installierte Versionen darstellen.
  3. Extrahieren Sie die Framework-Version, indem Sie das „v“ am Anfang des Unterschlüsselnamens entfernen.
  4. Öffnen Sie den Unterschlüssel, der der höchsten Version entspricht, und rufen Sie den „SP“-Wert ab, um die Service Pack-Ebene zu bestimmen.

.NET 1-4 Version Beispielcode:

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

.NET 4.5-Version unterstützt

Für .NET 4.5 und höher bietet die offizielle Microsoft-Dokumentation einen anderen Ansatz:

  1. Lösen Sie den Wert „Release“ im Registrierungsschlüssel „SOFTWAREMicrosoftNET Framework SetupNDPv4Full“ auf.
  2. Verwenden Sie diesen Wert, um die entsprechende Version anhand eines vordefinierten Bereichs zu ermitteln.

Beispielcode für die .NET 4.5-Version:

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

Diese Methoden sollten die installierte .NET Framework-Version genauer bestimmen, einschließlich der Unterstützung für 3.5 SP 1 und höher.

Das obige ist der detaillierte Inhalt vonWie kann ich die installierte .NET Framework-Version genau bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn