Vorgehensweise: Bestimmen der installierten .NET Framework-VersionenHow to: Determine which .NET Framework versions are installed

Benutzer können mehrere Versionen von .NET Framework auf einem Computer installieren und ausführen.Users can install and run multiple versions of the .NET Framework on their computers. Wenn Sie eine App entwickeln oder bereitstellen, müssen Sie möglicherweise herausfinden, welche Versionen von .NET Framework auf dem Computer des Benutzers installiert sind.When you develop or deploy your app, you might need to know which .NET Framework versions are installed on the user’s computer.

.NET Framework besteht aus zwei Hauptkomponenten mit separaten Versionen:The .NET Framework consists of two main components, which are versioned separately:

  • Ein Satz von Assemblys, bei denen es sich um Sammlungen von Typen und Ressourcen handelt, die die Funktionalität Ihre Apps bereitstellen.A set of assemblies, which are collections of types and resources that provide the functionality for your apps. .NET Framework und Assemblys verwenden die gleiche Versionsnummer.The .NET Framework and assemblies share the same version number.

  • Die CLR (Common Language Runtime, CLR), die den Code Ihrer App verwaltet und ausführt.The common language runtime (CLR), which manages and executes your app's code. Die CLR wird durch ihre eigene Versionsnummer identifiziert (siehe Versionen und Abhängigkeiten).The CLR is identified by its own version number (see Versions and Dependencies).

Hinweis

Jede neue Version von .NET Framework enthält weiterhin Funktionen aus den früheren Versionen und fügt neue Funktionen hinzu.Each new version of the .NET Framework retains features from the previous versions and adds new features. Sie können mehrere Versionen von .NET Framework gleichzeitig auf einen Computer laden. Somit können Sie .NET Framework installieren, ohne vorherige Versionen deinstallieren zu müssen.You can load multiple versions of the .NET Framework on a single computer at the same time, which means that you can install the .NET Framework without having to uninstall previous versions. Im Allgemeinen sollten Sie keine vorherigen Versionen von .NET Framework deinstallieren, da eine verwendete Anwendung möglicherweise von einer bestimmten Version abhängt und nicht mehr ausgeführt wird, wenn diese Version entfernt wird.In general, you shouldn't uninstall previous versions of the .NET Framework, because an application you use may depend on a specific version and may break if that version is removed.

Zwischen der .NET Framework-Version und der CLR-Version besteht ein Unterschied:There is a difference between the .NET Framework version and the CLR version:

  • Die .NET Framework-Version basiert auf den Assemblys, die die .NET Framework-Klassenbibliothek bilden.The .NET Framework version is based on the set of assemblies that form the .NET Framework class library. Beispielsweise zählen zu den .NET Framework-Versionen 4.5, 4.6.1 und 4.7.2.For example, .NET Framework versions include 4.5, 4.6.1, and 4.7.2.
  • Die CLR-Version basiert auf der Runtime, auf der .NET Framework-Anwendungen ausgeführt werden.The CLR version is based on the runtime on which .NET Framework applications execute. Eine einzelne CLR-Version unterstützt in der Regel mehrere .NET Framework-Versionen.A single CLR version typically supports multiple .NET Framework versions. Die CLR-Version 4.0.30319.xxxxx unterstützt zum Beispiel die .NET Framework-Versionen 4 bis 4.5.2, und die CLR-Version 4.0.30319.42000 unterstützt .NET Framework-Versionen ab .NET Framework 4.6.For example, CLR version 4.0.30319.xxxxx supports .NET Framework versions 4 through 4.5.2 and CLR version 4.0.30319.42000 supports .NET Framework versions starting with .NET Framework 4.6.

Weitere Informationen zu Versionen finden Sie unter .NET Framework-Versionen und -Abhängigkeiten.For more information about versions, see .NET Framework versions and dependencies.

Eine Liste der auf einem Computer installierten .NET Framework-Versionen finden Sie in der Registrierung.To get a list of the .NET Framework versions installed on a computer, you access the registry. Sie können die Registrierung entweder mit dem Registrierungs-Editor anzeigen oder mit Code abfragen:You can either use the Registry Editor to view the registry or use code to query it:

Verwenden Sie ein Tool oder Code, um eine Liste der auf einem Computer installierten CLR-Versionen zu erhalten:To get a list of the CLR versions installed on a computer, use a tool or code:

Informationen zum Ermitteln der installierten Updates für jede Version von .NET Framework finden Sie unter Gewusst wie: Ermitteln der installierten .NET Framework-Sicherheitsupdates und -Hotfixes.For information about detecting the installed updates for each version of the .NET Framework, see How to: Determine which .NET Framework updates are installed.

Suchen von neueren .NET Framework-Versionen (4.5 und höher)Find newer .NET Framework versions (4.5 and later)

Suchen von .NET Framework-Versionen 4.5 und höher in der RegistrierungFind .NET Framework versions 4.5 and later in the registry

  1. Wählen Sie im Menü Start die Option Ausführen aus, geben Sie regedit ein, und klicken Sie dann auf OK.From the Start menu, choose Run, enter regedit, and then select OK.

    Sie müssen über Administratorrechte verfügen, um regedit ausführen zu können.You must have administrative credentials to run regedit.

  2. Öffnen Sie im Registrierungs-Editor den folgenden Unterschlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full.In the Registry Editor, open the following subkey: 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.If the Full subkey isn't present, then you don't have the .NET Framework 4.5 or later installed.

    Hinweis

    Der Ordner NET Framework Setup in der Registrierung beginnt nicht mit einem Punkt.The NET Framework Setup folder in the registry does not begin with a period.

  3. Suchen Sie nach einem DWORD-Eintrag mit dem Namen Release.Check for a DWORD entry named Release. Wenn dieser vorhanden ist, haben Sie .NET Framework 4.5 oder höhere Versionen installiert.If it exists, then you have .NET Framework 4.5 or later versions installed. Der Wert ist ein Releaseschlüssel, der einer bestimmten Version des .NET Framework entspricht.Its value is a release key that corresponds to a particular version of the .NET Framework. In der folgenden Abbildung hat der Eintrag Release beispielsweise den Wert 378389, was dem Releaseschlüssel für .NET Framework 4.5 entspricht.In the following figure, for example, the value of the Release entry is 378389, which is the release key for .NET Framework 4.5.

    Registrierungseintrag für .NET Framework 4.5Registry entry for the .NET Framework 4.5

Die folgende Tabelle enthält den Wert des Release-DWORD für einzelne Betriebssysteme für .NET Framework 4.5 und höhere Versionen.The following table lists the value of the Release DWORD on individual operating systems for .NET Framework 4.5 and later versions.

Wichtig

Die folgende Tabelle enthält nur die Schlüssel der veröffentlichten Versionen von .NET Framework.The following table lists the keys of released versions of the .NET Framework only. Die Schlüssel von Vorschau- oder Vorabversionen sind nicht enthalten.It doesn't list the keys of preview or pre-release versions.

.NET Framework-Version.NET Framework version Wert des Versions-DWORDValue of the Release DWORD
.NET Framework 4.5.NET Framework 4.5 Alle Windows-Betriebssysteme: 378389All Windows operating systems: 378389
.NET Framework 4.5.1.NET Framework 4.5.1 Für Windows 8.1 und Windows Server 2012 R2: 378675On Windows 8.1 and Windows Server 2012 R2: 378675
Für alle anderen Windows-Betriebssysteme: 378758On all other Windows operating systems: 378758
.NET Framework 4.5.2.NET Framework 4.5.2 Alle Windows-Betriebssysteme: 379893All Windows operating systems: 379893
.NET Framework 4.6.NET Framework 4.6 Für Windows 10: 393295On Windows 10: 393295
Für alle anderen Windows-Betriebssysteme: 393297On all other Windows operating systems: 393297
.NET Framework 4.6.1.NET Framework 4.6.1 Für Windows 10 November Update-Systeme: 394254On Windows 10 November Update systems: 394254
Für alle anderen Windows-Betriebssysteme (einschließlich Windows 10): 394271On all other Windows operating systems (including Windows 10): 394271
.NET Framework 4.6.2.NET Framework 4.6.2 Auf Systemen unter Windows 10 Anniversary Update und Windows Server 2016: 394802On Windows 10 Anniversary Update and Windows Server 2016: 394802
Für alle anderen Windows-Betriebssysteme (einschließlich Windows 10-Betriebssysteme): 394806On all other Windows operating systems (including other Windows 10 operating systems): 394806
.NET Framework 4.7.NET Framework 4.7 Für Windows 10 Creators Update: 460798On Windows 10 Creators Update: 460798
Für alle anderen Windows-Betriebssysteme (einschließlich Windows 10-Betriebssysteme): 460805On all other Windows operating systems (including other Windows 10 operating systems): 460805
.NET Framework 4.7.1.NET Framework 4.7.1 Für Windows 10 Fall Creators Update und Windows Server Version 1709: 461308On Windows 10 Fall Creators Update and Windows Server, version 1709: 461308
Für alle anderen Windows-Betriebssysteme (einschließlich Windows 10-Betriebssysteme): 461310On all other Windows operating systems (including other Windows 10 operating systems): 461310
.NET Framework 4.7.2.NET Framework 4.7.2 Für Windows 10 April 2018 Update und Windows Server Version 1803: 461808On Windows 10 April 2018 Update and Windows Server, version 1803: 461808
Für alle anderen Betriebssysteme als Windows 10 April 2018 Update und Windows Server Version 1803: 461814On all Windows operating systems other than Windows 10 April 2018 Update and Windows Server, version 1803: 461814

Sie können diese Werte wie folgt verwenden:You can use these values as follows:

  • Um festzustellen, ob eine bestimmte Version von .NET Framework unter einer bestimmten Version des Windows-Betriebssystems installiert ist, testen Sie, ob der Release-DWORD-Wert gleich dem in der Tabelle aufgeführten Wert ist.To determine whether a specific version of the .NET Framework is installed on a particular version of the Windows operating system, test whether the Release DWORD value is equal to the value listed in the table. Um beispielsweise festzustellen, ob .NET Framework 4.6 auf einem Windows 10-System vorhanden ist, testen Sie, ob der Release-Wert gleich 393295 ist.For example, to determine whether .NET Framework 4.6 is present on a Windows 10 system, test for the a Release value that is equal to 393295.

  • Um festzustellen, ob eine Mindestversion von . NET Framework vorhanden ist, verwenden Sie den kleineren RELEASE-DWORD-Wert für diese Version.To determine whether a minimum version of the .NET Framework is present, use the smaller RELEASE DWORD value for that version. Wenn Ihre Anwendung beispielsweise unter.NET Framework 4.6 oder einer höheren Version ausgeführt wird, testen Sie, ob der RELEASE-DWORD-Wert größer oder gleich 393295 ist.For example, if your application runs under .NET Framework 4.6 or a later version, test for a RELEASE DWORD value that is greater than or equal to 393295. Eine Tabelle, die nur den RELEASE-DWORD-Mindestwert für jede.NET Framework-Version auflistet, finden Sie unter Mindestwerte des Release-DWORD für.NET Framework 4.5 und höhere Versionen.For a table that lists only the minimum RELEASE DWORD value for each .NET Framework version, see The minimum values of the Release DWORD for .NET Framework 4.5 and later versions.

  • Um auf mehrere Versionen zu testen, beginnen Sie mit dem Testen auf einen Wert, der größer oder gleich dem kleineren DWORD-Wert für die neueste .NET Framework-Version ist, und vergleichen Sie dann den Wert mit dem kleineren DWORD-Wert für jede nachfolgende frühere Version.To test for multiple versions, begin by testing for a value that is greater than or equal to the smaller DWORD value for the latest .NET Framework version, and then compare the value with the smaller DWORD value for each successive earlier version. Wenn Ihre Anwendung beispielsweise .NET Framework 4.7 oder höher erfordert und Sie die spezifische vorhandene Version von .NET Framework bestimmen möchten, starten Sie mit dem Testen auf einen RELEASE-DWORD-Wert, der größer oder gleich 461808 ist (der kleinere DWORD-Wert für .NET Framework 4.7.2).For example, if your application requires .NET Framework 4.7 or later and you want to determine the specific version of .NET Framework present, start by testing for a RELEASE DWORD value that is great than or equal to to 461808 (the smaller DWORD value for .NET Framework 4.7.2). Vergleichen Sie dann den RELEASE-DWORD-Wert mit dem kleineren Wert für jede spätere .NET Framework-Version.Then compare the RELEASE DWORD value with the smaller value for each later .NET Framework version. Eine Tabelle, die nur den RELEASE-DWORD-Mindestwert für jede.NET Framework-Version auflistet, finden Sie unter Mindestwerte des Release-DWORD für.NET Framework 4.5 und höhere Versionen.For a table that lists only the minimum RELEASE DWORD value for each .NET Framework version, see The minimum values of the Release DWORD for .NET Framework 4.5 and later versions.

Suchen von .NET Framework-Versionen 4.5 und höher mit CodeFind .NET Framework versions 4.5 and later with 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.Use the RegistryKey.OpenBaseKey and RegistryKey.OpenSubKey methods to access the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey in the Windows registry.

    Wenn der DWORD-Eintrag Release im Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full vorhanden ist, bedeutet dies, dass .NET Framework 4.5 oder eine höhere Version auf einem Computer installiert ist.The existence of the Release DWORD entry in the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey indicates that the .NET Framework 4.5 or a later version is installed on a computer.

  2. Überprüfen Sie den Wert des Eintrags Release, um die installierte Version zu bestimmen.Check the value of the Release entry to determine the installed version. 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.To be forward-compatible, check for a value greater than or equal to the value listed in the .NET Framework version table.

Im folgenden Beispiel wird der Wert des Eintrags Release in der Registrierung überprüft, um die installierten Versionen von .NET Framework 4.5 und höher zu suchen:The following example checks the value of the Release entry in the registry to find the .NET Framework 4.5 and later versions that are installed:

using System;
using Microsoft.Win32;

public class GetDotNetVersion
{
   public static void Main()
   {
      Get45PlusFromRegistry();
   }

   private static void Get45PlusFromRegistry()
   {
      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 >= 528049)
            return "4.8 or later";
         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";
      }
   }
}   
// This example displays output like the following:
//       .NET Framework Version: 4.6.1
Imports Microsoft.Win32

Public Module GetDotNetVersion
   Public Sub Main()
      Get45PlusFromRegistry()
   End Sub

   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 
            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 >= will enable forward compatibility.
   Private Function CheckFor45PlusVersion(releaseKey As Integer) As String
      If releaseKey >= 528049 Then
         Return "4.8 or later"
      Else If releaseKey >= 461808 Then
         Return "4.7.2" 
      Else If releaseKey >= 461308 Then
         Return "4.7.1"
      Else If releaseKey >= 460798 Then
         Return "4.7"
      Else If releaseKey >= 394802 Then
         Return "4.6.2"
      Else If releaseKey >= 394254 Then 
         Return "4.6.1"
      Else If releaseKey >= 393295 Then
         Return "4.6"
      Else If releaseKey >= 379893 Then
         Return "4.5.2"
      Else If releaseKey >= 378675 Then
         Return "4.5.1"
      Else If 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
End Module   
' The example displays output like the following:
'       .NET Framework Version: 4.6.1

In diesem Beispiel wird der empfohlenen Vorgehensweise zur Versionsprüfung gefolgt:This example follows the recommended practice for version checking:

  • Es wird überprüft, ob der Wert des Eintrags Release größer als der oder gleich dem Wert der bekannten Releaseschlüssel ist.It checks whether the value of the Release entry is greater than or equal to the value of the known release keys.

  • Es wird beginnend mit der neuesten Version bis hin zur ältesten Version geprüft.It checks in order from most recent version to earliest version.

Überprüfen mit PowerShell, ob eine mindestens erforderliche .NET Framework-Version (4.5 und höher) vorliegtCheck for a minimum-required .NET Framework version (4.5 and later) with PowerShell

  • 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.Use PowerShell commands to check the value of the Release entry of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full subkey.

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.The following examples check the value of the Release entry to determine whether the .NET Framework 4.6.2 or later is installed. Dieser Code gibt True zurück, wenn es installiert ist, und andernfalls False.This code returns True if it's installed and False otherwise.

# PowerShell 5
 Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\' |  Get-ItemPropertyValue -Name Release | Foreach-Object { $_ -ge 394802 } 
# PowerShell 4
(Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 394802

Ersetzen Sie in diesen Beispielen 394802 durch einen Release-Wert aus der .NET Framework-Versionstabelle, um zu überprüfen, ob eine andere mindestens erforderliche .NET Framework-Version vorhanden ist.To check for a different minimum-required .NET Framework version, replace 394802 in these examples with a Release value from the .NET Framework version table.

Suchen von älteren .NET Framework-Versionen (1–4)Find older .NET Framework versions (1–4)

Suchen der .NET Framework-Versionen 1–4 in der RegistrierungFind .NET Framework versions 1–4 in the registry

  1. Wählen Sie im Menü Start die Option Ausführen aus, geben Sie regedit ein, und klicken Sie dann auf OK.From the Start menu, choose Run, enter regedit, and then select OK.

    Sie müssen über Administratorrechte verfügen, um regedit ausführen zu können.You must have administrative credentials to run regedit.

  2. Öffnen Sie im Registrierungs-Editor den folgenden Unterschlüssel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:In the Registry Editor, open the following subkey: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP:

    • Für die .NET Framework-Versionen 1.1 bis 3.5 ist jede installierte Version als Unterschlüssel unter dem Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP aufgeführt.For .NET Framework versions 1.1 through 3.5, each installed version is listed as a subkey under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP subkey. Beispiel: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5.For example, HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5. Die Versionsnummer ist als Wert im Eintrag Version des Unterschlüssels der Version gespeichert.The version number is stored as a value in the version subkey's Version entry.

    • Bei .NET Framework 4 befindet sich der Eintrag Version unter dem Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client, dem Unterschlüssel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full oder unter beiden Unterschlüsseln.For .NET Framework 4, the Version entry is under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Client subkey, the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4.0\Full subkey, or under both subkeys.

    Hinweis

    Der Ordner NET Framework Setup in der Registrierung beginnt nicht mit einem Punkt.The NET Framework Setup folder in the registry does not begin with a period.

    Die folgende Abbildung zeigt den Unterschlüssel und dessen Version-Eintrag für .NET Framework 3.5.The following figure shows the subkey and its Version entry for the .NET Framework 3.5.

    Der Registrierungseintrag für .NET Framework 3.5.The registry entry for the .NET Framework 3.5.

Suchen der .NET Framework-Versionen 1–4 mit CodeFind .NET Framework versions 1–4 with code

  • 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.Use the Microsoft.Win32.RegistryKey class to access the HKEY_LOCAL_MACHINE\Software\Microsoft\NET Framework Setup\NDP subkey in the Windows registry.

Im folgenden Beispiel werden die installierten .NET Framework-Versionen 1–4 ermittelt:The following example finds the .NET Framework 1–4 versions that are installed:

using Microsoft.Win32;
using System;

public static class VersionTest
{
    public static void Main()
    {
        GetVersionFromRegistry();
    }
    
    private static void GetVersionFromRegistry()
    {
        // Opens 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, or an empty string if there is none.
                    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 (!(string.IsNullOrEmpty(sp)) && install == "1")
                        {
                            Console.WriteLine($"{versionKeyName}  {name}  SP{sp}");
                        }
                    }
                    if (! string.IsNullOrEmpty(name))
                    {
                        continue;
                    }
                    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 (!(string.IsNullOrEmpty(sp )) && install == "1")
                            {
                                Console.WriteLine($"{subKeyName}  {name}  SP{sp}");
                            }
                            else if (install == "1")
                            {
                                Console.WriteLine($"  {subKeyName}  {name}");
                            }
                        }
                    }
                }
            }
        }
    }
}
// The example displays output similar to the following:
//        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
Imports Microsoft.Win32

Public Module VersionTest
    Public Sub Main()
        GetVersionFromRegistry()
    End Sub
    
    Private Sub GetVersionFromRegistry()

        ' 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}")
                    Else
                        If Not String.IsNullOrEmpty(sp) AndAlso install = "1" Then
                            Console.WriteLine($"{versionKeyName}  {name}  SP{sp}")
                        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}")
                        Else
                            If Not String.IsNullOrEmpty(sp) AndAlso install = "1" Then
                                Console.WriteLine($"{subKeyName}  {name}  SP{sp}")
                            ElseIf install = "1" Then
                                Console.WriteLine($"  {subKeyName}  {name}")
                            End If
                        End If
                    Next
                End If
            Next
        End Using
    End Sub
End Module
' The example displays output similar to the following:
'        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

Suchen von CLR-VersionenFind CLR versions

Suchen der aktuellen CLR-Version mit „Clrver.exe“Find the current CLR version with Clrver.exe

Verwenden Sie das CLR-Versionstool (Clrver.exe), um zu bestimmen, welche Versionen der CLR auf einem Computer installiert sind:Use the CLR Version tool (Clrver.exe) to determine which versions of the CLR are installed on a computer:

Suchen der aktuellen CLR-Version mit der Environment-KlasseFind the current CLR version with the Environment class

Wichtig

Für .NET Framework 4.5 und höhere Versionen sollten Sie zum Erkennen der CLR-Version nicht die Eigenschaft Environment.Version verwenden.For the .NET Framework 4.5 and later versions, don't use the Environment.Version property to detect the version of the CLR. Fragen Sie stattdessen die Registrierung ab wie unter Suchen von .NET Framework-Versionen 4.5 und höher mit Code beschrieben.Instead, query the registry as described in Find .NET Framework versions 4.5 and later with code.

  1. Fragen Sie die Eigenschaft Environment.Version ab, um ein Version-Objekt abzurufen.Query the Environment.Version property to retrieve a Version object.

    Das zurückgegebene System.Version-Objekt identifiziert die Version der Runtime, die gerade den Code ausführt.The returned System.Version object identifies the version of the runtime that's currently executing the code. Es gibt keine Assemblyversionen oder andere Versionen der Runtime zurück, die möglicherweise auf dem Computer installiert wurden.It doesn't return assembly versions or other versions of the runtime that may have been installed on the computer.

    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.For the .NET Framework versions 4, 4.5, 4.5.1, and 4.5.2, the string representation of the returned Version object has the form 4.0.30319.xxxxx. Bei .NET Framework 4.6 und höheren Versionen weist sie das Format 4.0.30319.42000 auf.For the .NET Framework 4.6 and later versions, it has the form 4.0.30319.42000.

  2. Fragen Sie das erhaltene Version-Objekt wie folgt ab:After you have the Version object, query it as follows:

    • Verwenden Sie für den Hauptversionsbezeichner (zum Beispiel 4 für Version 4.0) die Eigenschaft Version.Major.For the major release identifier (for example, 4 for version 4.0), use the Version.Major property.

    • Verwenden Sie für den Nebenversionsbezeichner (zum Beispiel 0 für Version 4.0) die Eigenschaft Version.Minor.For the minor release identifier (for example, 0 for version 4.0), use the Version.Minor property.

    • Verwenden Sie für die gesamte Versionszeichenfolge (zum Beispiel 4.0.30319.18010) die Methode Version.ToString.For the entire version string (for example, 4.0.30319.18010), use the Version.ToString method. Diese Methode gibt einen einzelnen Wert zurück, der die Version der Runtime widerspiegelt, die den Code ausführt.This method returns a single value that reflects the version of the runtime that's executing the code. Sie gibt keine Assemblyversionen oder andere Runtimeversionen zurück, die möglicherweise auf dem Computer installiert sind.It doesn't return assembly versions or other runtime versions that may be installed on the computer.

Im folgenden Beispiel wird die Eigenschaft Environment.Version verwendet, um CLR-Versionsinformationen abzurufen:The following example uses the Environment.Version property to retrieve CLR version information:

using System;

public class VersionTest
{
    public static void Main()
    {
        Console.WriteLine($"Version: {Environment.Version}");
    }
}
// The example displays output similar to the following:'
//    Version: 4.0.30319.18010
Imports Microsoft.Win32

Public Module VersionTest
   Public Sub Main()
      GetVersionFromEnvironment()
   End Sub
   
    Private Sub GetVersionFromEnvironment()
        Console.WriteLine($"Version: {Environment.Version}")
    End Sub
End Module
' The example displays output similiar to the following:'
'    Version: 4.0.30319.18010

Siehe auchSee also