Gewusst wie: Bestimmen der installierten .NET Framework-Updates

Die installierten Updates für jede auf einem Computer installierten Version von .NET Framework werden in der Windows-Registrierung aufgeführt. Sie können diese Informationen mit dem Registrierungs-Editor (regedit.exe) anzeigen.

Im Registrierungs-Editor werden die .NET Framework-Versionen und die installierten Updates für jede Version in verschiedenen Unterschlüsseln gespeichert. Informationen zum Ermitteln der installierten Versionsnummern finden Sie unter Gewusst wie: Bestimmen der installierten .NET Framework-Versionen. Informationen zum Installieren von .NET Framework finden Sie unter Install the .NET Framework for developers (Installieren von .NET Framework für Entwickler).

So suchen Sie installierte Updates

  1. Öffnen Sie das Programm regedit.exe. Öffnen Sie in Windows 8 und höher die Startseite, und geben Sie den Namen ein. In früheren Versionen von Windows wählen Sie im Startmenü Ausführen aus, und geben Sie dann in das Feld Öffnen den Wert regedit.exe ein.

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

  2. Öffnen Sie im Registrierungs-Editor den folgenden Unterschlüssel:

    HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Updates

    Die installierten Updates werden unter Unterschlüsseln aufgeführt, die die für sie geltende .NET Framework-Version identifizieren. Jedes Update wird durch eine Knowledge Base (KB)-Nummer identifiziert.

Beispiel

Der folgende Code ermittelt programmgesteuert die auf einem Computer installierten .NET Framework-Updates. Sie müssen über Administratorrechte verfügen, um dieses Beispiel ausführen zu können.

using System;
using Microsoft.Win32;

public class GetUpdateHistory
{
    public static void Main()
    {
        using (RegistryKey baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\Updates"))
        {
            foreach (string baseKeyName in baseKey.GetSubKeyNames())
            {
                if (baseKeyName.Contains(".NET Framework") || baseKeyName.StartsWith("KB") || baseKeyName.Contains(".NETFramework"))
                {

                    using (RegistryKey updateKey = baseKey.OpenSubKey(baseKeyName))
                    {
                        string name = (string)updateKey.GetValue("PackageName", "");
                        Console.WriteLine(baseKeyName + "  " + name);
                        foreach (string kbKeyName in updateKey.GetSubKeyNames())
                        {
                            using (RegistryKey kbKey = updateKey.OpenSubKey(kbKeyName))
                            {
                                name = (string)kbKey.GetValue("PackageName", "");
                                Console.WriteLine("  " + kbKeyName + "  " + name);

                                if (kbKey.SubKeyCount > 0)
                                {
                                    foreach (string sbKeyName in kbKey.GetSubKeyNames())
                                    {
                                        using (RegistryKey sbSubKey = kbKey.OpenSubKey(sbKeyName))
                                        {
                                            name = (string)sbSubKey.GetValue("PackageName", "");
                                            if (name == "")
                                                name = (string)sbSubKey.GetValue("Description", "");
                                            Console.WriteLine("    " + sbKeyName + "  " + name);

                                        }
                                    }
                                }
                            }
                        }
                    }

                }
            }
        }
    }
}
Imports Microsoft.Win32

Public Class GetUpdateHistory
    Public Shared Sub Main()
        Using baseKey As RegistryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey("SOFTWARE\Microsoft\Updates")
            For Each baseKeyName As String In baseKey.GetSubKeyNames()
                If baseKeyName.Contains(".NET Framework") OrElse baseKeyName.StartsWith("KB") OrElse baseKeyName.Contains(".NETFramework") Then

                    Using updateKey As RegistryKey = baseKey.OpenSubKey(baseKeyName)
                        Dim name As String = CStr(updateKey.GetValue("PackageName", ""))
                        Console.WriteLine(baseKeyName & "  " & name)
                        For Each kbKeyName As String In updateKey.GetSubKeyNames()
                            Using kbKey As RegistryKey = updateKey.OpenSubKey(kbKeyName)
                                name = CStr(kbKey.GetValue("PackageName", ""))
                                Console.WriteLine("  " & kbKeyName & "  " & name)

                                If kbKey.SubKeyCount > 0 Then
                                    For Each sbKeyName As String In kbKey.GetSubKeyNames()
                                        Using sbSubKey As RegistryKey = kbKey.OpenSubKey(sbKeyName)
                                            name = CStr(sbSubKey.GetValue("PackageName", ""))
                                            If name = "" Then
                                                name = CStr(sbSubKey.GetValue("Description", ""))
                                            End If
                                            Console.WriteLine("    " & sbKeyName & "  " & name)

                                        End Using
                                    Next sbKeyName
                                End If
                            End Using
                        Next kbKeyName
                    End Using

                End If
            Next baseKeyName
        End Using
    End Sub
End Class

Das Beispiel führt zu einer Ausgabe, die der folgenden Ausgabe ähnelt:

Microsoft .NET Framework 3.5 SP1  
  KB953595  Hotfix for Microsoft .NET Framework 3.5 SP1 (KB953595)  
  SP1  
    KB2657424  Security Update for Microsoft .NET Framework 3.5 SP1 (KB2657424)  
    KB958484  Hotfix for Microsoft .NET Framework 3.5 SP1 (KB958484)  
    KB963707  Update for Microsoft .NET Framework 3.5 SP1 (KB963707)  
Microsoft .NET Framework 4 Client Profile  
  KB2160841  Security Update for Microsoft .NET Framework 4 Client Profile (KB2160841)  
  KB2446708  Security Update for Microsoft .NET Framework 4 Client Profile (KB2446708)  
  KB2468871  Update for Microsoft .NET Framework 4 Client Profile (KB2468871)  
  KB2478663  Security Update for Microsoft .NET Framework 4 Client Profile (KB2478663)  
  KB2518870  Security Update for Microsoft .NET Framework 4 Client Profile (KB2518870)  
  KB2533523  Update for Microsoft .NET Framework 4 Client Profile (KB2533523)  
  KB2539636  Security Update for Microsoft .NET Framework 4 Client Profile (KB2539636)  
  KB2572078  Security Update for Microsoft .NET Framework 4 Client Profile (KB2572078)  
  KB2633870  Security Update for Microsoft .NET Framework 4 Client Profile (KB2633870)  
  KB2656351  Security Update for Microsoft .NET Framework 4 Client Profile (KB2656351)  
Microsoft .NET Framework 4 Extended  
  KB2416472  Security Update for Microsoft .NET Framework 4 Extended (KB2416472)  
  KB2468871  Update for Microsoft .NET Framework 4 Extended (KB2468871)  
  KB2487367  Security Update for Microsoft .NET Framework 4 Extended (KB2487367)  
  KB2533523  Update for Microsoft .NET Framework 4 Extended (KB2533523)  
  KB2656351  Security Update for Microsoft .NET Framework 4 Extended (KB2656351)  

Siehe auch

Gewusst wie: Bestimmen der installierten .NET Framework-Versionen
Installieren von .NET Framework
Versionen und Abhängigkeiten