Freigeben über


Anleitung: Ermitteln, welche .NET Framework-Versionen installiert sind

Hinweis

Dieser Artikel ist spezifisch für .NET Framework. Informationen dazu, welche .NET Core- und .NET 5+-SDKs und Laufzeiten installiert sind, finden Sie unter How to check that .NET is already installed.

Sie können mehrere Versionen von .NET Framework auf einem Computer installieren und ausführen.

  • Wenn Sie die Versionen auf Ihrem eigenen Computer überprüfen möchten, besteht die einfachste Möglichkeit darin, über Systemsteuerung>Programme>Programme und Features oder in Einstellungen unter Apps>Installierte Apps zu gehen. Sie können diese von der Community verwalteten Tools auch verwenden.
  • Wenn Sie ein App-Entwickler sind, müssen Sie möglicherweise wissen, welche .NET Framework-Versionen auf dem Computer des App-Benutzers installiert sind. Die Registrierung enthält eine Liste der auf dem Computer installierten Versionen von .NET Framework. Sie können die RuntimeInformation.FrameworkDescription Eigenschaft auch abfragen.
  • Informationen zum Suchen der CLR-Version, die separat versioniert ist, finden Sie unter "CLR-Versionen suchen".

.NET Framework besteht aus zwei Hauptkomponenten, die separat versioniert werden:

  • Eine Reihe von Assemblys, bei denen es sich um Sammlungen von Typen und Ressourcen handelt, die die Funktionalität für Ihre Apps bereitstellen. .NET Framework und die Assemblys verwenden dieselbe Versionsnummer. .NET Framework-Versionen umfassen beispielsweise 4.5, 4.6.1 und 4.7.2.
  • Die Common Language Runtime (CLR), die den Code Ihrer App verwaltet und ausführt. Eine einzelne CLR-Version unterstützt in der Regel mehrere .NET Framework-Versionen. Beispiel: CLR, Version 4.0.30319. xxxxx , wobei xxxxx kleiner als 42000 ist, unterstützt .NET Framework-Versionen 4 bis 4.5.2. CLR-Version größer oder gleich 4.0.30319.42000 unterstützt .NET Framework-Versionen ab .NET Framework 4.6.

Tipp

Informationen zum Ermitteln der installierten Updates für jede Version von .NET Framework finden Sie unter How to: Determine which .NET Framework updates are installed.

Von der Community gepflegte Werkzeuge

Community-verwaltete Tools stehen zur Verfügung, um zu erkennen, welche .NET Framework-Versionen installiert sind:

RuntimeInformation.FrameworkDescription-Eigenschaft

Um programmgesteuert abzufragen, auf welcher .NET-Version Ihre App ausgeführt wird, können Sie die RuntimeInformation.FrameworkDescription Eigenschaft verwenden. Wenn die App auf .NET Framework ausgeführt wird, ähnelt die Ausgabe folgendem:

.NET Framework 4.8.4250.0

Wenn die App auf .NET Core oder .NET 5+ ausgeführt wird, ist die Ausgabe vergleichbar mit:

.NET Core 3.1.9
.NET 5.0.0

Registratur

Mit der Registrierung können Sie ermitteln, welche .NET Framework-Version installiert ist. Die Schlüssel unterscheiden sich für .NET Framework 1.0-4.0 und .NET Framework 4.5+. Sie können den Registrierungs-Editor, PowerShell oder Code verwenden, um die Registrierung zu überprüfen.

.NET Framework 4.5 und höhere Versionen

Die auf einem Computer installierte Version von .NET Framework (4.5 und höher) wird in der Registrierung unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Fullaufgeführt. Wenn der vollständige Unterschlüssel fehlt, wird .NET Framework 4.5 oder höher nicht installiert.

Hinweis

Der Unterschlüssel "NET Framework Setup" im Registrierungspfad beginnt nicht mit einem Punkt.

Der Wert "Release REG_DWORD" in der Registrierung stellt die installierte Version von .NET Framework dar.

.NET Framework-Version Wert der Freigabe
.NET Framework 4.5 Alle Windows-Betriebssysteme: 378389
.NET Framework 4.5.1 Unter Windows 8.1 und Windows Server 2012 R2: 378675
Auf allen anderen Windows-Betriebssystemen: 378758
.NET Framework 4.5.2 Alle Windows-Betriebssysteme: 379893
.NET Framework 4.6 Unter Windows 10: 393295
Auf allen anderen Windows-Betriebssystemen: 393297
.NET Framework 4.6.1 Unter Windows 10 November Update-Systemen: 394254
Unter allen anderen Windows-Betriebssystemen (einschließlich Windows 10): 394271
.NET Framework 4.6.2 Unter Windows 10 Anniversary Update und Windows Server 2016: 394802
Auf allen anderen Windows-Betriebssystemen (einschließlich anderer Windows 10-Betriebssysteme): 394806
.NET Framework 4.7 Unter Windows 10 Creators Update: 460798
Auf allen anderen Windows-Betriebssystemen (einschließlich anderer Windows 10-Betriebssysteme): 460805
.NET Framework 4.7.1 Unter Windows 10 Fall Creators Update und Windows Server, Version 1709: 461308
Auf allen anderen Windows-Betriebssystemen (einschließlich anderer Windows 10-Betriebssysteme): 461310
.NET Framework 4.7.2 Unter Windows 10 April 2018 Update und Windows Server, Version 1803: 461808
Auf allen anderen Windows-Betriebssystemen als Windows 10 April 2018 Update und Windows Server, Version 1803: 461814
.NET Framework 4.8 Unter Windows 10 Mai 2019 Update und Windows 10 November 2019 Update: 528040
Unter Windows 10 Mai 2020 Update, Oktober 2020 Update, Mai 2021 Update, November 2021 Update und 2022 Update: 528372
Unter Windows 11 und Windows Server 2022: 528449
Auf allen anderen Windows-Betriebssystemen (einschließlich anderer Windows 10-Betriebssysteme): 528049
.NET Framework 4.8.1 Unter Windows 11 2025 Update: 533509
Unter Windows 11 2022 Update und Windows 11 2023 Update: 533320
Alle anderen Windows-Betriebssysteme: 533325

Mindestversion

Um festzustellen, ob eine Mindestversion von .NET Framework vorhanden ist, suchen Sie nach einem Release-REG_DWORD Wert, der größer oder gleich dem in der folgenden Tabelle aufgeführten entsprechenden Wert ist. Wenn Ihre Anwendung beispielsweise unter .NET Framework 4.8 oder einer höheren Version ausgeführt wird, testen Sie einen Release-REG_DWORD Wert, der größer oder gleich 528040 ist.

.NET Framework-Version Minimalwert
.NET Framework 4.5 378389
.NET Framework 4.5.1 378675
.NET Framework 4.5.2 379893
.NET Framework 4.6 393295
.NET Framework 4.6.1 394254
.NET Framework 4.6.2 394802
.NET Framework 4.7 460798
.NET Framework 4.7.1 461308
.NET Framework 4.7.2 461808
.NET Framework 4.8 528040
.NET Framework 4.8.1 533320

Verwenden des Registrierungs-Editors

  1. Wählen Sie im Startmenü"Ausführen" aus, geben Sie "regedit" ein, und wählen Sie dann "OK" aus.

    (Sie müssen über Administratoranmeldeinformationen verfügen, um regedit auszuführen.)

  2. Öffnen Sie im Registrierungs-Editor den folgenden Unterschlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full. Wenn der vollständige Unterschlüssel nicht vorhanden ist, ist .NET Framework 4.5 oder höher nicht installiert.

  3. Suchen Sie nach einem REG_DWORD Eintrag namens Release. Falls vorhanden, ist .NET Framework 4.5 oder höher installiert. Der Wert entspricht einer bestimmten Version von .NET Framework. In der folgenden Abbildung ist beispielsweise der Wert des Releaseeintrags 528040, der der Releaseschlüssel für .NET Framework 4.8 ist.

    Screenshot des RegEdit-Tools mit dem Registrierungseintrag für .NET Framework 4.5

Verwenden von PowerShell zum Überprüfen auf eine Mindestversion

Verwenden Sie PowerShell-Befehle, um den Wert des Release-Eintrags des Unterschlüssels HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full zu überprüfen.

In den folgenden Beispielen wird der Wert des Releaseeintrags überprüft, um festzustellen, ob .NET Framework 4.6.2 oder höher installiert ist. Dieser Code gibt zurück True , wenn er installiert ist und False andernfalls.

(Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release) -ge 394802

Abfragen der Registrierung mithilfe von Code

  1. Verwenden Sie die RegistryKey.OpenBaseKey Methoden und RegistryKey.OpenSubKey Methoden, um auf den HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full Unterschlüssel in der Windows-Registrierung zuzugreifen.

    Von Bedeutung

    Wenn die app, die Sie ausführen, 32-Bit-Version ist und in 64-Bit-Windows ausgeführt wird, unterscheiden sich die Registrierungspfade von der zuvor aufgeführten Liste. Die 32-Bit-Registrierung ist im Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ verfügbar. Der Registrierungsunterschlüssel für .NET Framework 4.5 ist z. B. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v4\Full.

  2. Überprüfen Sie den Wert "Release REG_DWORD", um die installierte Version zu ermitteln. Um vorwärtskompatibel zu sein, suchen Sie nach einem Wert, der größer oder gleich dem Wert ist, der in der .NET Framework-Versionstabelle aufgeführt ist.

Im folgenden Beispiel wird der Wert des Releaseeintrags in der Registrierung überprüft, um die versionen von .NET Framework 4.5-4.8.1 zu finden, die installiert sind.

Tipp

Fügen Sie die Direktive using Microsoft.Win32 oder Imports Microsoft.Win32 oben in der Codedatei hinzu, sofern dies noch nicht geschehen ist.

const string subkey = @"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\";

using (RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32))
using (RegistryKey ndpKey = baseKey.OpenSubKey(subkey))
{
    if (ndpKey != null && ndpKey.GetValue("Release") != null)
        Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion((int)ndpKey.GetValue("Release"))}");
    else
        Console.WriteLine(".NET Framework Version 4.5 or later is not detected.");
}

// Checking the version using >= enables forward compatibility.
string CheckFor45PlusVersion(int releaseKey)
{
    if (releaseKey >= 533320) return "4.8.1 or later";
    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 >= 379893) return "4.5.2";
    if (releaseKey >= 378675) return "4.5.1";
    if (releaseKey >= 378389) return "4.5";

    // This code 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";
}
Private Sub Get45PlusFromRegistry()
    Const subkey As String = "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"

    Using baseKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32),
          ndpKey As RegistryKey = baseKey.OpenSubKey(subkey)

        If ndpKey IsNot Nothing AndAlso ndpKey.GetValue("Release") IsNot Nothing Then
            Console.WriteLine($".NET Framework Version: {CheckFor45PlusVersion(ndpKey.GetValue("Release"))}")
        Else
            Console.WriteLine(".NET Framework Version 4.5 or later is not detected.")
        End If

    End Using

End Sub

' Checking the version using >= enables forward compatibility.
Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
    Select Case releaseKey
        Case >= 533320 : Return "4.8.1 or later"
        Case >= 528040 : Return "4.8"
        Case >= 461808 : Return "4.7.2"
        Case >= 461308 : Return "4.7.1"
        Case >= 460798 : Return "4.7"
        Case >= 394802 : Return "4.6.2"
        Case >= 394254 : Return "4.6.1"
        Case >= 393295 : Return "4.6"
        Case >= 379893 : Return "4.5.2"
        Case >= 378675 : Return "4.5.1"
        Case >= 378389 : Return "4.5"
        Case Else
            Return "No 4.5 or later version detected"
    End Select
End Function

Im Beispiel wird die Ausgabe wie folgt angezeigt:

.NET Framework Version: 4.6.1

Abfragen der Registrierung mithilfe von PowerShell

Im folgenden Beispiel wird PowerShell verwendet, um den Wert des Releaseeintrags in der Registrierung zu überprüfen, um die Versionen von .NET Framework 4.5-4.8.1 zu finden, die installiert sind:

$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release
switch ($release) {
    { $_ -ge 533320 } { $version = '4.8.1 or later'; break }
    { $_ -ge 528040 } { $version = '4.8'; break }
    { $_ -ge 461808 } { $version = '4.7.2'; break }
    { $_ -ge 461308 } { $version = '4.7.1'; break }
    { $_ -ge 460798 } { $version = '4.7'; break }
    { $_ -ge 394802 } { $version = '4.6.2'; break }
    { $_ -ge 394254 } { $version = '4.6.1'; break }
    { $_ -ge 393295 } { $version = '4.6'; break }
    { $_ -ge 379893 } { $version = '4.5.2'; break }
    { $_ -ge 378675 } { $version = '4.5.1'; break }
    { $_ -ge 378389 } { $version = '4.5'; break }
    default { $version = $null; break }
}

if ($version) {
    Write-Host -Object ".NET Framework Version: $version"
} else {
    Write-Host -Object '.NET Framework Version 4.5 or later is not detected.'
}

Dieses Beispiel folgt der empfohlenen Vorgehensweise für die Versionsüberprüfung:

  • Er überprüft, ob der Wert des Releaseeintragsgrößer oder gleich dem Wert der bekannten Releasewerte ist.
  • Sie überprüft die Reihenfolge von der neuesten Version bis zur frühesten Version.

.NET Framework 1.0-4.0

Jede Version von .NET Framework von 1.1 bis 4.0 wird unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDPals Unterschlüssel aufgeführt. In der folgenden Tabelle sind die Pfade zu jeder .NET Framework-Version aufgeführt. Für die meisten Versionen gibt es einen REG_DWORD-Installationswert, mit dem 1 angegeben wird, dass diese Version installiert ist. In diesen Unterschlüsseln gibt es auch einen Version REG_SZ Wert, der eine Versionszeichenfolge enthält.

Hinweis

Der Unterschlüssel "NET Framework Setup" im Registrierungspfad beginnt nicht mit einem Punkt.

Framework-Version Registrierungsunterschlüssel Wert
1,0 HKLM\Software\Microsoft\. NETFramework\Policy\v1.0\3705 Installieren REG_SZ ist gleich 1
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 Installieren REG_DWORD ist gleich 1
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 Installieren REG_DWORD ist gleich 1
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup InstallSuccess REG_DWORD ist gleich 1
3,5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 Installieren REG_DWORD ist gleich 1
4.0 Clientprofil HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client Installieren REG_DWORD ist gleich 1
4.0 Vollständiges Profil HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full Installieren REG_DWORD ist gleich 1

Von Bedeutung

Wenn die app, die Sie ausführen, 32-Bit-Version ist und in 64-Bit-Windows ausgeführt wird, unterscheiden sich die Registrierungspfade von der zuvor aufgeführten Liste. Die 32-Bit-Registrierung ist im Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ verfügbar. Der Registrierungsunterschlüssel für .NET Framework 3.5 ist z. B. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.

Beachten Sie, dass sich der Registrierungspfad zum .NET Framework 1.0-Unterschlüssel von den anderen unterscheidet.

Verwenden des Registrierungs-Editors (ältere Frameworkversionen)

  1. Wählen Sie im Startmenü"Ausführen" aus, geben Sie "regedit" ein, und wählen Sie dann "OK" aus.

    Sie müssen über Administratoranmeldeinformationen verfügen, um regedit auszuführen.

  2. Öffnen Sie den Unterschlüssel, der der version entspricht, die Sie überprüfen möchten. Verwenden Sie die Tabelle im Abschnitt .NET Framework 1.0-4.0 .

    Die folgende Abbildung zeigt den Unterschlüssel und dessen Versionswert für .NET Framework 3.5.

    Screenshot des RegEdit-Tools mit dem Registrierungseintrag für .NET Framework 3.5

Abfragen der Registrierung mithilfe von Code (ältere Frameworkversionen)

Verwenden Sie die Microsoft.Win32.RegistryKey Klasse, um in der Windows-Registrierung auf den Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP zuzugreifen.

Von Bedeutung

Wenn die app, die Sie ausführen, 32-Bit-Version ist und in 64-Bit-Windows ausgeführt wird, unterscheiden sich die Registrierungspfade von der zuvor aufgeführten Liste. Die 32-Bit-Registrierung ist im Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ verfügbar. Der Registrierungsunterschlüssel für .NET Framework 3.5 ist z. B. HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup\NDP\v3.5.

Im folgenden Beispiel werden die Versionen von .NET Framework 1-4 gefunden, die installiert sind:

// Open the registry key for the .NET Framework entry. Dispose this object when done.
RegistryKey ndpKey =
    RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32)
        .OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\");

foreach (string versionKeyName in ndpKey.GetSubKeyNames())
{
    // Skip .NET Framework 4.5 version information.
    if (versionKeyName == "v4")
        continue;

    if (versionKeyName.StartsWith("v"))
    {
        RegistryKey versionKey = ndpKey.OpenSubKey(versionKeyName);

        // Get the .NET Framework version value.
        string name = versionKey.GetValue("Version", "").ToString();

        // Get the service pack (SP) number.
        string sp = versionKey.GetValue("SP", "").ToString();

        // Get the installation flag.
        string install = versionKey.GetValue("Install", "").ToString();

        if (string.IsNullOrEmpty(install))
        {
            // No install info; it must be in a child subkey.
            Console.WriteLine($"{versionKeyName}  {name}");
        }
        else if (install == "1")
        {
            // Install = 1 means the version is installed.
            if (!string.IsNullOrEmpty(sp))
                Console.WriteLine($"{versionKeyName}  {name}  SP{sp}");
            else
                Console.WriteLine($"{versionKeyName}  {name}");
        }

        if (!string.IsNullOrEmpty(name))
        {
            versionKey.Dispose();
            continue;
        }

        // Iterate through the subkeys of the version subkey.
        foreach (string subKeyName in versionKey.GetSubKeyNames())
        {
            RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
            name = subKey.GetValue("Version", "").ToString();

            if (!string.IsNullOrEmpty(name))
                sp = subKey.GetValue("SP", "").ToString();

            install = subKey.GetValue("Install", "").ToString();

            if (string.IsNullOrEmpty(install))
            {
                // No install info; it must be later.
                Console.WriteLine($"  {versionKeyName}  {name}");
            }
            else if (install == "1")
            {
                if (!string.IsNullOrEmpty(sp))
                    Console.WriteLine($"  {subKeyName}  {name}  SP{sp}");
                else
                    Console.WriteLine($"  {subKeyName}  {name}");
            }

            // Clean up the subkey object.
            subKey.Dispose();
        }

        versionKey.Dispose();
    }
}

ndpKey.Dispose();
' Open the registry key for the .NET Framework entry. Dispose this object when done.
Dim ndpKey As RegistryKey =
    RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32) _
        .OpenSubKey("SOFTWARE\Microsoft\NET Framework Setup\NDP\")

For Each versionKeyName In ndpKey.GetSubKeyNames()
    ' Skip .NET Framework 4.5 and later.
    If versionKeyName = "v4" Then Continue For

    If versionKeyName.StartsWith("v") Then

        Dim versionKey As RegistryKey = ndpKey.OpenSubKey(versionKeyName)

        ' Get the .NET Framework version value.
        Dim name = versionKey.GetValue("Version", "").ToString()

        ' Get the service pack (SP) number.
        Dim sp = versionKey.GetValue("SP", "").ToString()

        Dim install = versionKey.GetValue("Install", "").ToString()

        If String.IsNullOrEmpty(install) Then

            ' No install info; it must be in a child subkey.
            Console.WriteLine($"{versionKeyName}  {name}")

        ElseIf install = "1" Then

            ' Install = 1 means the version is installed.
            If Not String.IsNullOrEmpty(sp) Then
                Console.WriteLine($"{versionKeyName}  {name}  SP{sp}")
            Else
                Console.WriteLine($"{versionKeyName}  {name}")
            End If

        End If

        If Not String.IsNullOrEmpty(name) Then

            versionKey.Dispose()
            Continue For

        End If

        ' Iterate through the subkeys of the version subkey.
        For Each subKeyName In versionKey.GetSubKeyNames()

            Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName)
            name = subKey.GetValue("Version", "").ToString()

            If Not String.IsNullOrEmpty(name) Then
                sp = subKey.GetValue("SP", "").ToString()
            End If

            install = subKey.GetValue("Install", "").ToString()

            If String.IsNullOrEmpty(install) Then

                ' No install info; it must be later.
                Console.WriteLine($"  {versionKeyName}  {name}")

            ElseIf install = "1" Then

                If Not String.IsNullOrEmpty(sp) Then
                    Console.WriteLine($"  {subKeyName}  {name}  SP{sp}")
                Else
                    Console.WriteLine($"  {subKeyName}  {name}")
                End If

            End If

            ' Clean up the subkey object.
            subKey.Dispose()

        Next

        versionKey.Dispose()

    End If
Next

ndpKey.Dispose()

Im Beispiel wird die Ausgabe ähnlich wie folgt angezeigt:

v2.0.50727  2.0.50727.4927  SP2
v3.0  3.0.30729.4926  SP2
v3.5  3.5.30729.4926  SP1
v4.0
  Client  4.0.0.0

Abfragen der Registrierung mithilfe von PowerShell (ältere Frameworkversionen)

Im folgenden Beispiel wird PowerShell verwendet, um den Wert des Releaseeintrags in der Registrierung zu überprüfen, um die installierten Versionen von .NET Framework 1-4 zu finden:

Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' |
Where-Object { ($_.PSChildName -ne "v4") -and ($_.PSChildName -like 'v*') } |
ForEach-Object {
    $name = $_.Version
    $sp = $_.SP
    $install = $_.Install
    if (-not $install) {
        Write-Host -Object "$($_.PSChildName)  $($name)"
    }
    elseif ($install -eq '1') {
        if (-not $sp) {
            Write-Host -Object "$($_.PSChildName)  $($name)"
        }
        else {
            Write-Host -Object "$($_.PSChildName)  $($name) SP$($sp)"
        }
}
    if (-not $name) {
        $parentName = $_.PSChildName
        Get-ChildItem -LiteralPath $_.PSPath |
        Where-Object {
            if ($_.Property -contains 'Version') { $name = $((Get-ItemProperty -Path "Registry::$_").Version) }
            if ($name -and ($_.Property -contains 'SP')) { $sp = $((Get-ItemProperty -Path "Registry::$_").SP) }
            if ($_.Property -contains 'Install') { $install = $((Get-ItemProperty -Path "Registry::$_").Install) }
            if (-not $install) {
                Write-Host -Object "  $($parentName)  $($name)"
            }
            elseif ($install -eq '1') {
                if (-not $sp) {
                    Write-Host -Object "  $($_.PSChildName)  $($name)"
                }
                else {
                    Write-Host -Object "  $($_.PSChildName)  $($name) SP$($sp)"
                }
            }
        }
    }
}

Suchen nach CLR-Versionen

Die .NET Framework-CLR, die mit .NET Framework installiert ist, wird separat versioniert. Es gibt zwei Möglichkeiten, die Version von .NET Framework CLR zu erkennen:

Das Clrver.exe-Tool

Verwenden Sie das CLR-Versionstool (Clrver.exe), um zu bestimmen, welche Versionen der CLR auf einem Computer installiert sind. Öffnen Sie die Visual Studio Developer-Eingabeaufforderung oder Visual Studio Developer PowerShell , und geben Sie die Zeichenfolge ein clrver.

Beispielausgabe:

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

Die Environment.Version-Eigenschaft

Von Bedeutung

Verwenden Sie nicht die Eigenschaft Environment.Version, um für .NET Framework 4.5 und höhere Versionen die Version der CLR zu erkennen. Fragen Sie stattdessen die Registrierung ab, wie in .NET Framework 4.5 und höheren Versionen beschrieben.

  1. Fragen Sie die Environment.Version Eigenschaft ab, um ein Version Objekt abzurufen.

    Das zurückgegebene System.Version Objekt identifiziert die Version der Laufzeit, die derzeit den Code ausführt. Assemblyversionen oder andere Versionen der Laufzeit, die möglicherweise auf dem Computer installiert wurden, werden nicht zurückgegeben.

    Für .NET Framework-Versionen 4, 4.5, 4.5.1 und 4.5.2 weist die Zeichenfolgendarstellung des zurückgegebenen Version Objekts das Format 4.0.30319 auf.xxxxx, wobei xxxxx kleiner als 42000 ist. Für .NET Framework 4.6 und höhere Versionen hat sie das Format 4.0.30319.42000.

  2. Nachdem Sie über das Version-Objekt verfügen, fragen Sie es wie folgt ab:

    • Verwenden Sie für den Hauptversionsbezeichner (z. B. 4 für Version 4.0) die Version.Major Eigenschaft.
    • Verwenden Sie für die Nebenversions-ID (z. B. 0 für Version 4.0) die Version.Minor Eigenschaft.
    • Verwenden Sie für die gesamte Versionszeichenfolge (z. B. 4.0.30319.18010) die Version.ToString Methode. Diese Methode gibt einen einzelnen Wert zurück, der die Version der Laufzeit widerspiegelt, die den Code ausführt. Assemblyversionen oder andere Laufzeitversionen, die möglicherweise auf dem Computer installiert sind, werden nicht zurückgegeben.

Im folgenden Beispiel wird die Environment.Version-Eigenschaft verwendet, um CLR-Versionsinformationen abzurufen.

Console.WriteLine($"Version: {Environment.Version}");
Console.WriteLine($"Version: {Environment.Version}")

Im Beispiel wird die Ausgabe ähnlich wie folgt angezeigt:

Version: 4.0.30319.18010

Siehe auch