Registry

Aus PC-WELT-Wiki

Wechseln zu: Navigation, Suche

Architektur der Registry

Die Registry bildet unter Windows die Konfigurationszentrale für System, Hardware und Software. Sie besteht unter Windows 2000/XP/Vista aus folgenden Binär-Dateien unter %windir%\System32\Config:

  • software
  • system
  • default
  • security
  • sam

Der Inhalt des Schlüssels „Hkey_Current_User“ (also die Einstellungen des aktuell angemeldeten Users) bezieht Windows aus der Datei Ntuser.DAT unter %userprofile%<Kontoname>.

Der Zugriff auf die Registry erfolgt über die API oder über die entsprechenden Windows-Tools. Neben dem bekanntesten Tool Regedit.EXE können auch das Kommandozeilenprogramm REG.EXE, Subinacl.EXE, Gpedit.MSC, Poledit.EXE oder die Windows Powershell auf die Registry zugreifen; eine weitere Alternative sind Dateien mit der Erweiterung REG, die Regedit.EXE nach Doppelklick automatisch importiert. Neben diesen Windows-eigenen Programmen gibt es ein Heer von spezialisierten Tools wie TweakUI oder pcwReg, die auf bestimmte Registry-Schlüssel zugreifen und ändern können, ferner Tools wie pcwRegSaveRestore, welche die Registry sichern (diese ist im laufenden Betrieb gesperrt).

Die fünf unter Regedit repräsentierten Hauptschlüssel

  • HKEY_Classes_Root (HKCR, im Wesentlichen die Definition der Shellerweiterungen, Dateitypen, zugehörige Anwendungen)
  • HKEY_Current_User (HKCU, die System- und Software-Einstellungen des aktuellen Benutzers)
  • HKEY_Local_Machine (HKLM, die für das gesamte System geltenden Einstellungen, Hardware, System-kritische Dienste und Treiber)
  • HKEY_Users (HKU, System- und Software-Einstellungen der eingerichteten Benutzer plus Default-Konto)
  • HKEY_Current_Config (HKCC, aktuelle Hardware-Einstellungen)

reduzieren sich auf die zwei realen Hauptschlüssel HKEY_Local_Machine und HKEY_Users.

HKEY_Classes_Root ist eine Spiegelung von HKEY_Local_Machine\Software\Classes. HKEY_Current_User ist eine Spiegelung von HKEY_Users\<SID> (<SID> ist die eindeutige Security-ID des aktiven Users). HKEY_Current_Config ist eine Spiegelung von HKEY_Local_Machine\System\CurrentControlset\Hardware Profiles\Current. Diese Spiegelungen dienen nur der einfacheren Navigation und Pfadverkürzung.

Jeder Registry-Eintrag hat drei wesentliche Bestandteile:

  • Schlüssel mit eindeutigem Pfad (etwa HKEY_Current_User\Software\PC-Welt\pcwMegaloader)
  • Name (etwa "SourceFolder")
  • Wert (etwa "1")

Die Einträge können verschiedene Formate aufweisen:

  • Zeichenfolge (REG_SZ)
  • mehrteilige Zeichenfolge (REG_Multi_SZ)
  • 1_Byte-Hexwert (REG_DWORD)
  • 2_Byte-Hexwert (REG_QWORD, nur Vista)
  • Binärwert ohne definierte Länge (REG-BINARY)

Die Registry hat die Aufgabe, zahllose Konfigurationseinstellungen (die sich in älteren Windows-Versionen quer über die Festplatte in INI- und CFG-Dateien verteilten) an einer zentralen und sprachunabhängigen Stelle zu versammeln. Diese Zentralisierung hat den Vorteil einfacher Sicherung und guter Performance. Sie hat aber auch klare Nachteile: Die heterogene Registry enthält System-kritische Einstellungen (insbesondere unter Hkey_Local_Machine\System\CurrentControlSet) neben ungezählten belanglosen Einträgen: Gezielte Fehlersuche und gezielter Export von Einstellungen (Migration von Software-Einstellungen auf andere Rechner) ist im Wust dieser enormen Datenhalde meist nur Experten vorbehalten, das Zuordnen von Programmen zu ihren Registry-Einträgen gelingt in der Regel nur mit speziellen Monitor-Tools wie etwa dem Prozess-Monitor von Sysinternals.

Hinzu kommt das zumindest theoretisch nachteilige Phänomen der Fragmentierung: Gelöschte Einträge verbleiben als ungenutzte Löcher in den Binärdateien und werden somit weiter mitgeladen. Das heisst: Eine Registry wird nicht mehr kleiner, selbst wenn Anwendungen bei der De-Installationen ihre Werte wieder sauber entsorgen. Das Problem der Fragmentierung wird jedoch in der Regel überschätzt: Abgesehen vom Systemstart hat eine Registry mit einigen MB unnötiger Einträge keine spürbaren Auswirkung auf die Systemleistung.

Hauptproblem ist der Zugriff auf eine Registry eines nicht funktionienden Windows-System. Die binären Daten lassen keine direkte Änderung zu. Einzige und mühsame Möglichkeit ist der Start eines sekundären Windows-Systems (Win PE, Bart PE oder Parallelinstallation) und das "Einhängen" der defekten Registry in diejenige des Zweitsystems. Dies geschieht in Regedit über den Befehl "Datei, Struktur laden". Diese Option verspricht aber nur dann Erfolg, wenn die Fehlerursache bekannt ist und im eingehängten Baum behoben werden kann.


Weitere Informationen zu den Registry-Schlüsseln finden Sie unter http://support.microsoft.com/kb/256986.