Vorgehensweise: Bestimmen der installierten .NET Framework-Versionen

Benutzer können mehrere Versionen des .NET Frameworks auf einem Computer installieren und ausführen. Wenn Sie eine App entwickeln oder bereitstellen, müssen Sie möglicherweise herausfinden, welche Versionen des .NET Frameworks auf dem Computer des Benutzers installiert sind. Die Registrierung enthält eine Liste der auf einem Computer installierten .NET Framework-Versionen.

Hinweis

Dieser Artikel gilt für das .NET Framework. Informationen dazu, welche SDKs und Runtimes von .NET Core und .NET 5 oder höher installiert sind, finden Sie unter Überprüfen der Installation von .NET.

Das .NET Framework besteht aus zwei Hauptkomponenten mit separaten Versionen:

  • Ein Satz von Assemblys, bei denen es sich um Sammlungen von Typen und Ressourcen handelt, die die Funktionalität Ihre Apps bereitstellen. .NET Framework und Assemblys verwenden die gleiche Versionsnummer. Beispielsweise zählen zu den .NET Framework-Versionen 4.5, 4.6.1 und 4.7.2.

  • Die CLR (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: Die Version 4.0.30319.xxxxx der CLR (wobei xxxxx kleiner als 42000 ist) unterstützt die Versionen 4 bis 4.5.2 des .NET Frameworks. Ab Version 4.0.30319.42000 unterstützt die CLR Version 4.6 und höher des .NET Frameworks.

Mithilfe von Tools, die von der Community verwaltet werden, können Sie ermittelt, welche .NET Framework-Versionen installiert sind:

Informationen zum Ermitteln der installierten Updates für jede Version des .NET Frameworks finden Sie unter Vorgehensweise: Ermitteln der installierten .NET Framework-Sicherheitsupdates und -Hotfixes.

Ermitteln der .NET-Implementierung und -Version einer App

Sie können die RuntimeInformation.FrameworkDescription-Eigenschaft verwenden, um abzufragen, welche .NET-Implementierung und -Version Ihre App nutzt. Wenn die App auf dem .NET Framework ausgeführt wird, sieht die Ausgabe in etwa wie folgt aus:

.NET Framework 4.8.4250.0

Im Vergleich dazu, sieht die Ausgabe wie folgt aus, wenn die App mit .NET Core oder .NET 5 oder höher ausgeführt wird:

.NET Core 3.1.9
.NET 5.0.0

Erkennen von .NET Framework 4.5 und höheren Versionen

Die Version des .NET Frameworks (4.5 und höher), die auf einem Computer installiert ist, wird in der Registrierung unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full aufgeführt. Wenn der Unterschlüssel Full fehlt, ist weder .NET Framework 4.5 noch eine höhere Version installiert.

Hinweis

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

Der Release-Wert REG_DWORD in der Registrierung steht für die installierte .NET Framework-Version.

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

Mindestversion

Wenn Sie bestimmen möchten, ob eine Mindestversion des .NET Framework vorhanden ist, suchen Sie nach einem REG_DWORD-Wert des Release, der höher oder gleich dem entsprechenden in der folgenden Tabelle aufgeführten Wert ist. Wenn Ihre Anwendung beispielsweise unter .NET Framework 4.8 oder einer höheren Version ausgeführt wird, testen Sie, ob der Releasewert für REG_DWORD 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 Menü Start die Option Ausführen aus, geben Sie regedit ein, und klicken Sie dann auf OK.

    (Sie müssen über Administratorrechte verfügen, um regedit ausführen zu können.)

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

  3. Suchen Sie nach einem REG_DWORD-Eintrag mit dem Namen Release. Wenn dieser vorhanden ist, haben Sie .NET Framework 4.5 oder höher installiert. Der zugehörige Wert entspricht einer bestimmten Version des .NET Frameworks. In der folgenden Abbildung weist der Eintrag Release beispielsweise den Wert 528040 auf, was dem Releaseschlüssel für .NET Framework 4.8 entspricht.

    Registry entry for .NET Framework 4.5

Verwenden von PowerShell zum Prüfen auf eine Mindestversion

Verwenden Sie PowerShell-Befehle, um den Wert des Eintrags Release 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 Eintrags Release überprüft, um zu bestimmen, ob .NET Framework 4.6.2 oder höher installiert ist. Dieser Code gibt True zurück, wenn es installiert ist, und andernfalls False.

(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 Methoden RegistryKey.OpenBaseKey und RegistryKey.OpenSubKey, um auf den Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full in der Windows-Registrierung zuzugreifen.

    Wichtig

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

  2. Überprüfen Sie den Release-Wert für REG_DWORD, um die installierte Version zu bestimmen. Suchen Sie einen Wert größer als oder gleich dem Wert, der in der .NET Framework-Versionstabelle aufgeführt ist, um die Aufwärtskompatibilität zu überprüfen.

Im folgenden Beispiel wird der Wert des Eintrags Release in der Registrierung überprüft, um die installierten Versionen von .NET Framework 4.5 bis 4.8.1 und höher zu suchen.

Tipp

Fügen Sie die Anweisung using Microsoft.Win32 oder Imports Microsoft.Win32 am Anfang der Codedatei hinzu, sofern Sie dies nicht bereits getan haben.

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

using (var ndpKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).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 ndpKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).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
    If releaseKey >= 533320 Then
        Return "4.8.1 or later"
    ElseIf releaseKey >= 528040 Then
        Return "4.8"
    ElseIf releaseKey >= 461808 Then
        Return "4.7.2"
    ElseIf releaseKey >= 461308 Then
        Return "4.7.1"
    ElseIf releaseKey >= 460798 Then
        Return "4.7"
    ElseIf releaseKey >= 394802 Then
        Return "4.6.2"
    ElseIf releaseKey >= 394254 Then
        Return "4.6.1"
    ElseIf releaseKey >= 393295 Then
        Return "4.6"
    ElseIf releaseKey >= 379893 Then
        Return "4.5.2"
    ElseIf releaseKey >= 378675 Then
        Return "4.5.1"
    ElseIf releaseKey >= 378389 Then
        Return "4.5"
    End If
    ' 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"
End Function

In diesem Beispiel wird die folgende Ausgabe angezeigt:

.NET Framework Version: 4.6.1

Abfragen der Registrierung mithilfe von Code: PowerShell

Im folgenden Beispiel wird der Wert des Eintrags Release in der Registrierung mithilfe von PowerShell überprüft, um die installierten Versionen von .NET Framework 4.5 bis 4.8.1 und höher zu suchen:

$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.'
}

In diesem Beispiel wird der empfohlenen Vorgehensweise zur Versionsprüfung gefolgt:

  • Es wird überprüft, ob der Wert des Eintrags Releasegrößer als der oder gleich dem Wert der bekannten Releaseschlüssel ist.
  • Es wird beginnend mit der neuesten Version bis hin zur ältesten Version geprüft.

Erkennen der Versionen 1.0 bis 4.0 des .NET Frameworks

Jede Version von .NET Framework zwischen den Versionen 1.1 und 4.0 wird unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP als Unterschlüssel aufgeführt. In der folgenden Tabelle wird der Pfad zu den einzelnen .NET Framework-Versionen aufgelistet. Für die meisten Versionen gibt es einen Install-Wert für REG_DWORD von 1, der angibt, dass die jeweilige Version installiert ist. In diesen Unterschlüsseln gibt es auch einen Version-Wert für REG_SZ, 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 Install-Wert für REG_SZ entspricht 1
1.1 HKLM\Software\Microsoft\NET Framework Setup\NDP\v1.1.4322 Install-Wert für REG_DWORD entspricht 1
2.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v2.0.50727 Install-Wert für REG_DWORD entspricht 1
3.0 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.0\Setup InstallSuccess-Wert für REG_DWORD entspricht 1
3.5 HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5 Install-Wert für REG_DWORD entspricht 1
4.0, Clientprofil HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Client Install-Wert für REG_DWORD entspricht 1
4.0, vollständiges Profil HKLM\Software\Microsoft\NET Framework Setup\NDP\v4\Full Install-Wert für REG_DWORD entspricht 1

Wichtig

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

Hinweis: Der Registrierungspfad für den Unterschlüssel für .NET Framework 1.0 unterscheidet sich von dem anderer Registrierungsschlüssel.

Verwenden des Registrierungs-Editors (ältere Frameworkversionen)

  1. Wählen Sie im Menü Start die Option Ausführen aus, geben Sie regedit ein, und klicken Sie dann auf OK.

    Sie müssen über Administratorrechte verfügen, um regedit ausführen zu können.

  2. Öffnen Sie den Unterschlüssel, der der Version entspricht, die Sie überprüfen möchten. Verwenden Sie die Tabelle im Abschnitt Erkennen der Versionen 1.0 bis 4.0 des .NET Frameworks.

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

    The registry entry for .NET Framework 3.5.

Abfragen der Registrierung mithilfe von Code (ältere Frameworkversionen)

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

Wichtig

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

Im folgenden Beispiel werden die installierten .NET Framework-Versionen 1–4 ermittelt:

// Open the registry key for the .NET Framework entry.
using (RegistryKey ndpKey =
        RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).
        OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\"))
{
    foreach (var 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.
            var name = (string)versionKey.GetValue("Version", "");
            // Get the service pack (SP) number.
            var sp = versionKey.GetValue("SP", "").ToString();

            // Get the installation flag.
            var 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))
            {
                continue;
            }
            // else print out info from subkeys...

            // Iterate through the subkeys of the version subkey.
            foreach (var subKeyName in versionKey.GetSubKeyNames())
            {
                RegistryKey subKey = versionKey.OpenSubKey(subKeyName);
                name = (string)subKey.GetValue("Version", "");
                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}");
                    }
                }
            }
        }
    }
}
' Opens the registry key for the .NET Framework entry.
Using 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 = DirectCast(versionKey.GetValue("Version", ""), String)
            ' 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

                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
                Continue For
            End If

            For Each subKeyName In versionKey.GetSubKeyNames()
                Dim subKey As RegistryKey = versionKey.OpenSubKey(subKeyName)
                name = DirectCast(subKey.GetValue("Version", ""), String)
                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
            Next
        End If
    Next
End Using

Die Konsole zeigt eine Ausgabe an, die der folgenden in etwa entspricht:

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 Framework-Versionen)

Im folgenden Beispiel wird der Wert des Eintrags Release in der Registrierung mithilfe von PowerShell überprüft, um die installierten Versionen von .NET Framework 1 bis 4 und höher zu suchen:

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-ItemPropertyValue -Path $_.PSPath -Name Version }
            if ($name -and ($_.Property -contains 'SP')) { $sp = Get-ItemPropertyValue -Path $_.PSPath -Name SP }
            if ($_.Property -contains 'Install') { $install = Get-ItemPropertyValue -Path $_.PSPath -Name 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 von CLR-Versionen

Die mit dem für .NET Framework installierte CLR-Version wird separat bestimmt. Es gibt zwei Möglichkeiten, die Version der .NET Framework-CLR zu ermitteln:

  • Das Tool Clrver.exe

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

    Beispielausgabe:

    Versions installed on the machine:
    v2.0.50727
    v4.0.30319
    
  • Die Klasse Environment

    Wichtig

    Für .NET Framework 4.5 und höhere Versionen sollten Sie zum Ermitteln der CLR-Version nicht die Eigenschaft Environment.Version verwenden. Fragen Sie stattdessen wie im Abschnitt Erkennen von .NET Framework 4.5 und höheren Versionen beschrieben die Registrierung ab.

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

      Das zurückgegebene System.Version-Objekt identifiziert die Version der Runtime, die gerade den Code ausführt. Es gibt keine Assemblyversionen oder andere Versionen der Runtime zurück, die möglicherweise auf dem Computer installiert wurden.

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

    2. Fragen Sie das erhaltene Version-Objekt wie folgt ab:

      • Verwenden Sie für den Hauptversionsbezeichner (zum Beispiel 4 für Version 4.0) die Eigenschaft Version.Major.

      • Verwenden Sie für den Nebenversionsbezeichner (zum Beispiel 0 für Version 4.0) die Eigenschaft Version.Minor.

      • Verwenden Sie für die gesamte Versionszeichenfolge (zum Beispiel 4.0.30319.18010) die Methode Version.ToString. Diese Methode gibt einen einzelnen Wert zurück, der die Version der Runtime widerspiegelt, die den Code ausführt. Sie gibt keine Assemblyversionen oder andere Runtimeversionen zurück, die möglicherweise auf dem Computer installiert sind.

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

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

    Die Konsole zeigt eine Ausgabe an, die der folgenden in etwa entspricht:

    Version: 4.0.30319.18010
    

Siehe auch