- Regedit
-
Die Windows-Registrierungsdatenbank (auch: Windows-Registry oder Windows-Registrierdatenbank) ist seit der ersten Version von Windows NT die zentrale hierarchische Konfigurationsdatenbank des Betriebssystems Microsoft Windows. Hier werden sowohl Informationen von Windows selbst als auch Informationen von Programmen gespeichert. Mit Windows 3.x wurde die Windows-Registry auch im Bereich der Consumer-Betriebssysteme eingeführt. Während unter den frühen Windowssystemen hauptsächlich Dateiextensions gespeichert wurden, handelt es sich bei der Registry seit Windows 95 und Windows NT 4.0 um eine umfassende Datenbank für die Verwaltung des Systems und aller integrierten Systemdienste und -prozesse. Die Registry bietet auch die Möglichkeit, dort die Einstellungen der installierten Anwendungen zentral abzulegen.
Inhaltsverzeichnis
Aufbau und Struktur
Registrierungs-Einträge werden in einer Baumstruktur in so genannten „Schlüsseln“ (engl. keys) angelegt, die alle von einigen Hauptschlüsseln abstammen.
Die Registrierung besteht aus zwei Teilen: Der erste Teil umfasst Konfigurationsdaten für die gesamte Windows-Installation, der zweite Teil beinhaltet alle benutzerspezifischen Informationen und Einstellungen. Die in der Registrierungsdatenbank gespeicherten Daten enthalten alle variablen Informationen des Betriebssystems, wie zum Beispiel Größe und Name der Auslagerungsdatei, Einstellungen für den Windows-Explorer, die gesamte COM-Registrierung (Klassen und Typenbibliotheken), Einstellungen für diverse Programme, Treibereinstellungen und die Hardwarekonfiguration.
Übersicht der Schlüssel
Die Registrierungsdatenbank ist in sechs Hauptschlüssel unterteilt:
Übersicht der Hauptschlüssel der Registry Schlüsselname Abkürzung Berechtigungen (*) Beschreibung HKEY_CLASSES_ROOT HKCR Zusammenführung von HKEY_LOCAL_MACHINE\Software\Classes und HKEY_CURRENT_USER\Software\Classes. Hier werden Informationen über die verschiedenen COM-Objekte sowie Dateitypen gespeichert. Darunter fallen die Beschreibung, das Symbol und die verknüpfte Anwendung. HKEY_CURRENT_USER HKCU Admins: Vollzugriff, User: Vollzugriff (auf eigenen) Verknüpfung auf das Benutzerprofil des aktuell angemeldeten Benutzers unter HKEY_USERS. HKEY_LOCAL_MACHINE HKLM Admins: Vollzugriff, User: nur Lesen Hier werden von allen Benutzern geteilte Einstellungen und Informationen gespeichert. HKEY_USERS HKU Admins: Vollzugriff, User: Zugriff nur auf eigenes Enthält den Stamm aller Benutzerprofile auf dem Computer. Hier werden Einstellungen und Informationen gespeichert, die nur für den jeweiligen Windows-Benutzer gelten. HKEY_CURRENT_CONFIG HKCC Admins: Vollzugriff, User: Keiner Verknüpfung auf das aktuell verwendete Hardwareprofil unter HKEY_LOCAL_MACHINE. HKEY_DYN_DATA keine (nur Windows 9x, NT) Enthält Laufzeitdaten für den Performance-Monitor (*) Stark vereinfacht, ohne Ausnahmen (z. B. auf HKCU\Policies hat ein User nur Leserechte) und nur die zwei Standard-Typen „Admins“ (mit Adminrechten) und „User“ (ohne Adminrechte) aufgelistet. Die in der Tabelle kursiv ausgezeichneten Schlüssel sind nicht real existent, sondern lediglich Verknüpfungen zu anderen Schlüsseln. Die Abkürzung HKEY, welche die Namen der Hauptschlüssel einleitet, steht für „handle to key“. Das „H“ von „HKEY“ steht oft auch für „hive“ (engl. „Bienenstock“).
HKEY_CLASSES_ROOT
Unter diesem Hauptschlüssel befindet sich für jeden registrierten Dateityp ein Unterschlüssel. Dieser wiederum kann eine Reihe weiterer Unterschlüssel wie zum Beispiel „ShellEx”, „ShellNew”, „OpenWithList” und viele mehr enthalten. Auch kann dieser Unterschlüssel Werte haben. Ein sehr häufig benutzter Wert ist hierbei „Content Type”, wo der Inhaltstyp der Datei festgelegt wird. Dieser kann zum Beispiel „text/plain” sein, was eine reine Textdatei kennzeichnet, oder zum Beispiel „image/jpeg”, was eine JFIF-Bilddatei kennzeichnen würde. Beim Standardwert des Unterschlüssels steht unter Umständen auch ein Klassenname. Dieser Klassenname kennzeichnet einen weiteren Unterschlüssel von HKCR mit weiteren Informationen. Einer der wichtigsten Unterschlüssel von HKCR ist „CLSID” (Class ID). Hier befinden sich viele Unterschlüssel mit GUIDs der registrierten COM-Klassen und -Typenbibliotheken. Bei einer COM-Klasse gibt es im Normalfall entweder den Unterschlüssel „InprocServer32” oder „LocalServer32”, je nachdem, ob es sich um einen In-Process-Server handelt oder nicht. Dieser Unterschlüssel enthält als Standardwert den Dateinamen der COM-Bibliothek, die die Klasse enthält (dies ist meistens eine DLL-Datei). Der Unterschlüssel „ProgID” gibt die Prog-ID der Klasse an (zum Beispiel „ADODB.Recordset”), die beispielsweise in VBScript verwendet wird, um eine Instanz der Klasse anzulegen.
HKEY_CURRENT_USER
Der Hauptschlüssel HKEY_CURRENT_USER wird auch als „HKCU“ abgekürzt und enthält die benutzerspezifischen Konfigurationsdaten für den aktuell angemeldeten Benutzer. Ein bedeutender Unterschlüssel ist „Software”, welcher benutzerbezogene Anwendungseinstellungen enthält: die installierten Anwendungsprogramme legen ihre Konfiguration – oder zumindest einen Teil davon – in diesem Unterschlüssel ab. Der Unterschlüssel „Software” enthält dabei für jeden Softwarehersteller einen eigenen Unterschlüssel. So gibt es beispielsweise einen Unterschlüssel „Microsoft”, der wiederum einen Unterschlüssel „Windows” besitzt, der wiederum einen Unterschlüssel „CurrentVersion” hat, der wiederum einen Schlüssel „Run” hat. Dieser enthält eine Liste aller Anwendungen, die nach erfolgter Anmeldung des Benutzers ausgeführt werden sollen.
HKEY_LOCAL_MACHINE
Dieser Hauptschlüssel „HKLM“ enthält alle computerspezifischen Einstellungen. Der Unterschlüssel „SOFTWARE“ ähnelt von der Struktur her dem Unterschlüssel „Software” in „HKCU”. Auch hier gibt es einen Unterschlüssel „SOFTWARE\Microsoft\Windows\CurrentVersion\Run”, der jedoch alle Anwendungen enthält, die nach dem erfolgreichen Anmelden jedes Benutzers auf diesem Rechner ausgeführt werden.
Zum anderen gibt es Schlüssel wie „SYSTEM“, die die Konfiguration des Betriebssystems als solches enthält, inkl. Geräte-Manager-Einstellungen und die Windows-Dienste-Konfiguration.
HKEY_USERS
Dieser Hauptschlüssel enthält die benutzerspezifischen Konfigurationsdaten aller Benutzer, die sich gegenwärtig an dem System angemeldet haben. Die Konfigurationsdaten werden nur beim Anmelden des Benutzers aus HKEY_USERS in den benutzerspezifischen Hauptschlüssel HKEY_CURRENT_USER kopiert.
Von .ini zur Registry
Bevor sich das Konzept der Registry durchgesetzt hatte, wurden Parameter in separaten Dateien für jedes einzelne Programm in dessen Verzeichnis gespeichert. Einige Programmierer verwenden diese Technik bis heute oft aus Gewohnheit, zum Zwecke der Portierbarkeit von Software oder aufgrund der Tatsache, dass sie die Windows-Registry nicht „zumüllen“ wollen. Diese Dateien haben häufig das Dateiendungskürzel .ini. Diese Dateien lassen sich einfach mit jedem Texteditor öffnen und verwalten, und sie müssen nicht einer riesigen, hierarchischen Struktur folgen, wie in der Registry.
Vor- und Nachteile
Vorteile gegenüber INI- und XML-Dateien
Dies sind Vorteile der Speicherung der Werte in der Registry gegenüber der Speicherung der Werte in INI- oder XML-Dateien lokal zu jedem Programm:
- Die Registrierungsdatenbank braucht wenig Rechenleistung und ist deshalb schnell – da es eine indizierte Datenbank ist und z. B. Zahlen als Zahlen und nicht als Zeichenketten gespeichert werden, ist das Auslesen und das Speichern wesentlich schneller als das Speichern in eine INI-Datei oder eine XML-Datei.
- Einstellungen für einzelne Benutzer („HKEY_CURRENT_USER“) sind klar getrennt von globalen Computereinstellungen („HKEY_LOCAL_MACHINE“), durch Default-Sicherheitseinstellungen auch korrekt implementiert.
- Für Administratoren können Teilinformationen leicht „ausgerollt“ werden, durch Einsatz von REG- und ADM-Dateien. Beides braucht wenig Rechenleistung und überschreibt dabei keine explizit angegebenen Informationen. Für INI- und XML-Dateien gibt es keine solchen Hilfsprogramme bei Windows. Durch Dritthersteller ist es aber auch bei diesen relativ einfach möglich, solche „Rollouts“ durchzuführen.
- Die Registrierungsdatenbank ist leicht mit Skripten zu bearbeiten, auch das Übernehmen von Einstellungen von einem PC zum nächsten ist automatisiert mittels Batchdateien möglich (mittels eines „regedit /e“-Befehls zum Exportieren und einem „regedit /s“-Befehl zum Importieren), welche dann auf jedem Windows-Betriebssystem ab Windows 95 und Windows NT 4.0 ohne Beachtung von Installationspfad, Betriebssystemssprache, etc. funktionieren.
- Änderungen an Schlüsseln und Werten, die von Programmen gemacht werden, können mit Tools wie RegMon „live“ aufgezeichnet werden. Ebenso kann das Auslesen eines Schlüssels mit diesem Tool jederzeit mitverfolgt werden. Dies ist zur Diagnose, aber auch zur netzwerkweiten automatischen Vorgabe von Einstellungen sehr nützlich. Bei INI- und XML-Dateien wäre ein Vergleich von Vorher- und Nachherzustand notwendig, also das vorherige Speichern der Vorversion der Datei, um herauszufinden, was sich geändert hat, da ein entsprechendes Live-Tool wie FileMon nur die Tatsache feststellen kann, dass die Datei (und welche) verändert wurde.
- Der größte Vorteil der Registry ist, dass verschiedene Programme auf dieselben Registry-Einträge zugreifen können. Dadurch kann die Kommunikation zwischen verschiedenen Programmen stark vereinfacht werden.
Nachteile
- Die Registrierung ist proprietär und betriebssystemabhängig. Das Übertragen von Anwendungseinstellungen von Windows zu anderen Betriebssystemen ist daher nur möglich, wenn z. B. der Programmautor eine Import-/Exportfunktion der Einstellungen anbietet.
- Die Struktur der Registrierung ist nicht stark ausgeprägt.
- Es ist nicht möglich, eine ausführlichere Dokumentation der von einer Anwendung verwendeten Werte direkt zu hinterlegen. Dies müsste in einem losgelösten Dokument (z. B. als README-Textdatei oder als HTML-Datei) geschehen, wenn der Autor die möglichen Werte dokumentieren will. In INI-Dateien kann dies durch als Kommentar markierte Zeilen (Semikolon als erstes Zeichen der Zeile) direkt „vor Ort“ geschehen.
- Das Zugreifen auf die Registrierung eines nicht laufenden Systems ist mühsam. Das erschwert z. B. das Reparieren einer Windows-Installation mit einer Start-CD oder einem parallel installierten Windows-Betriebssystem (s. u.).
- Eine sehr starke System-Bindung – das heißt, jedes Programm, welches seine Daten (wie beispielsweise Nutzer-Einstellungen) in der Windows-Registrierung speichert, ist damit automatisch vom jeweiligen Rechner abhängig, was eine Portierung von einem Rechner auf einen anderen (z. B. neueren) Rechner sowie auch von einem Betriebssystem zu einem anderen Betriebssystem sehr stark erschwert und zum Teil sogar unmöglich macht (siehe auch Softwaremigration).
- Durch ungenügende Programmierung der Programme kann eine Neu-Installation von Windows auch die Neu-Installation der Programme nach sich ziehen. Dieses ist immer dann der Fall, wenn Programme und Windows auf unterschiedlichen Partitionen installiert wurden, Windows neu installiert wurde und die Anwendungen die Funktionalitäten zur Einrichtung der Registry-Einträge ausschließlich in dem Installationsprogram enthalten.
- Wenn die Registry wegen Problemen mit Windows auf eine ältere Version zurückgesetzt werden muss (z.B. durch scanreg unter Win 9x oder die Systemwiederherstellung bei der NT-Linie), werden auch alle Anwendungseinstellungen zurückgesetzt.
Bearbeitungsmöglichkeiten
Die Registry kann mit den Windows-eigenen Registrierungseditoren regedit (bei Windows NT, Windows 2000, Windows XP und Windows Server 2003 auch regedt32) bearbeitet werden oder über das Kommandozeilentool reg, das für Windows 2000 im Resource Kit enthalten ist, seit Windows XP in der Betriebssystem-Installation selbst enthalten ist.
Regedit beinhaltet nur sehr grundsätzliche Funktionen. Man kann Schlüssel und Werte anlegen, bearbeiten und löschen sowie Teile der Registrierung exportieren und wieder importieren. Auf jeden Fall sollte man bei Änderungen in der Registrierungsdatenbank vorsichtig sein, da man unter Umständen die Konfiguration soweit instabil machen kann, dass das Betriebssystem nicht mehr gestartet werden kann. Man kann dann nur unter erheblichem Aufwand versuchen, entweder die zuletzt als funktionierend bekannte Konfiguration zu verwenden oder eine eventuell vorhandene Sicherung wiederherzustellen. Diese Aufforderung zur Vorsicht ist allerdings auch nicht zu übertrieben zu nehmen, da nur sehr wenige Schlüssel dies auslösen können, die praktisch ausschließlich im HKEY_LOCAL_MACHINE\\System-Hive zu finden sind.
Es gibt auch Programme, mit denen sich gezielt bestimmte Einstellungen in der Registrierung bearbeiten lassen. Ein Beispiel wäre ein Bestandteil von Windows, nämlich das Programm zum Bearbeiten von Dateitypen. Von Microsoft selbst gibt es zum Beispiel das Gratis-Tool „Tweak UI”, mit dem sich bestimmte Einstellungen, die in der Registrierungsdatenbank gespeichert werden, verändern lassen. Dort lässt sich zum Beispiel das von Unix-Konsolen her bekannte und beliebte Autovervollständigen mit der Tab-Taste aktivieren. Natürlich gibt es auch Programme, die sich um den Schutz der Registrierungsdatenbanken vor zerstörerischen Programmen und Spyware kümmern. Eines davon kommt selbst von Microsoft und heißt Windows Defender. Es warnt, falls ein Programm versucht, bestimmte Teile der Registrierungsdatenbank zu verändern.
Von Drittherstellern werden teilweise auch kommerzielle Produkte angeboten, die ein Bearbeiten der Registry einfacher machen sollen, indem sie beispielsweise zu bearbeitende Schlüssel nach Kategorien ordnen.
Es ist auch möglich, bereits existierende Registrierungs-Benutzerprofile nachträglich anzupassen. Das ist jedoch ein recht aufwendiges Unterfangen, da die Unterordner unter „HKEY_USERS“ passend bearbeitet werden müssten. Es gibt auch die Möglichkeit die Profile zu „laden“ und dann zu bearbeiten. Ein Ändern der Einstellungen des Systembenutzers (ab Windows 2000) unter „HKEY_USERS\.DEFAULT“ gilt auch nur für diesen und hilft hier nicht weiter. Ein Ändern des „Default-Profiles“ für neue Benutzer hilft hier auch nicht. Allerdings kann ein Administrator ein Loginskript für die Benutzer definieren, wo die gewünschten Änderungen dann beim nächsten Login angewandt werden. Das Einstellen eines Loginskripts ist dabei für jeden (gewünschten) Benutzer vorzunehmen, manuell oder durch ein entsprechendes Tool, das dieses unterstützt.
Seit dem Erscheinen der Windows PowerShell gibt es eine weitere sehr einfache Möglichkeit, die Registry zu verwalten. Dabei kann man auf die Registry direkt über die Konsole oder durch ein Shellskript wie auf ein herkömmliches Laufwerk zugreifen. Dazu gibt man beispielsweise cd HKLM: ein, um auf den Hauptschlüssel HKEY_LOCAL_MACHINE zugreifen zu können. Zu den Unterschlüsseln gelangt man ebenfalls über den Befehl cd oder in der Langform Set-Location. Der Befehl Get-ItemProperty . zeigt alle Eigenschaften (Registry-Einträge), die für den aktuellen Registryschlüssel gespeichert sind. Auf diese Weise lassen sich beispielsweise durch Eingabe der folgenden Befehlsfolge in der PowerShell alle Einträge des Run-Schlüssels anzeigen:
cd HKLM: cd software\microsoft\windows\currentversion\run Get-ItemProperty .
REGEDIT versus REGEDT32
REGEDT32 ist der ursprüngliche Registry-Editor auf Win32-basierten Betriebssystemen und war unter Windows NT 3.x-Versionen als einziger vorhanden. REGEDIT kam mit Windows 95 dazu, auf der Win9x-Produktlinie war er zudem der einzige mitgelieferte. Windows NT 4.0 und Windows 2000 liefern als einzige Betriebssysteme beide mit. Ab Windows XP wurde REGEDT32 fallen gelassen, d. h. der Aufruf von „regedt32“ startet „regedit“, da ab Windows XP REGEDIT alle Funktionen enthält und REGEDT32 somit obsolet geworden ist.
REGEDIT konnte vor der Windows XP-Version keine Berechtigungen einstellen, zudem konnte er einige Datentypen nicht editieren. REGEDT32 hatte diese Funktionen von Anfang an, hatte aber deutlich geringeren Komfort:
- Mehrere Fenster, für jeden Hive eins
- Suchfunktion nur auf den aktuell angewählten Hive anwendbar
- Keine Kontextmenüs
- Rechte Anzeige sehr kryptisch, da nicht in Spalten aufgeteilt
- Allgemein Menüs und Oberfläche sehr viel technischer, demnach kryptischer
Speicherorte auf der Festplatte
Die Daten der Registry werden in mehreren Dateien, sogenannten Hives, in einem speziellen Datenbank-Format auf der Festplatte gespeichert.
Die HKEY_LOCAL_MACHINE liegt bei Betriebssystemen der Windows-NT-Linie, also auch Windows XP, in den Verzeichnissen %windir%\System32\Config gespeichert. Windows 9x hingegen speichert den Inhalt dieses Teils der Registry in der Datei system.dat
Die HKEY_CURRENT_USER dagegen ist im Benutzerprofilverzeichnis gespeichert, welches also bei servergespeicherten Profilen in einer Windows-Domäne beim Login netzwerkweit mit übertragen wird. Bei NT-Systemen liegt sie als „ntuser.dat“ in „C:\WinNT\Profiles\Benutzername“ bzw. „C:\Dokumente und Einstellungen\Benutzername“ – je nach Version, Sprache, Installationslaufwerk und evtl. Updatepfad. Bei Windows 9x heißt die Datei user.dat, wenn keine Benutzertrennung aktiviert ist.
Da die Unversehrtheit dieser Dateien essentiell für ein funktionierendes System ist, legt Windows automatisch Sicherungskopien dieser Dateien an. Es kann auch eine Kopie aller Daten, die im Registrierungs-Editor gespeichert sind, durch den Benutzer selbst angefertigt werden.
Fehlt eine Datei, die Bestandteil der HKEY_LOCAL_MACHINE ist, und kann auch die Sicherheitskopie nicht geladen werden, kann Windows nicht mehr starten – eine Fehlermeldung ist die Folge. Aus diesem Problem hilft nur eine Neuinstallation, wenn man nicht die Dateien manuell noch irgendwo gesichert hat und z. B. mit der Recovery Console von Windows 2000 und höher zurückspielen kann.
Fehlt die Datei, die den HKEY_CURRENT_USER-Hive enthält, wird eine neue Datei erstellt, indem eine Vorlage mit Standardeinstellungen kopiert wird – diese ist bei Windows-NT-basierten Systemen im Default User-Verzeichnis zu finden. Dies ist z. B. der Fall, wenn der User gerade erst neu angelegt wurde.
Sicherheit
Da mit der Registry auch Optionen wie das Ausblenden des Taskmanagers oder Komponenten der Systemsteuerung vorgenommen werden können, ist es nützlich, die Registry z. B. in großen Netzwerken vor ungewollten Änderungen durch normale Benutzer zu schützen. Dies kann durch die Funktion „Berechtigungen” vorgenommen werden.
Tatsächlich ist dies aber schon getan, wenn das empfohlene Einsatzszenario in Firmen verwendet wird, wo Benutzer keine Administrationsrechte haben. Ohne Administrationsrechte hat man nur Leserechte auf HKEY_LOCAL_MACHINE und Schreibrechte nur in HKEY_CURRENT_USER (was die eigenen persönlichen Einstellungen widerspiegelt).
Problematisch ist jedoch, dass Windows-Tools selbst z. T. mit sehr langen Schlüsselnamen schlecht umgehen können und Schadprogramme so Einträge verstecken können. Der Registry Editor kann diese z. B. nicht bearbeiten, Windows jedoch schon.
Stilllegen von RegEdit
Für Administratoren wurde die Möglichkeit implementiert, das Ausführen von REGEDIT.exe durch einen Registry-Eintrag im
Policies
-Bereich bei bestimmten Usern zu verhindern. In diesen Bereich kann ein Standarduser ohne Adminrechte nicht schreiben, die Einstellung kann z. B. durch Gruppenrichtlinien gesetzt werden. Das Vorhandensein dieses Keys verhindert selbstverständlich nicht das Verwenden anderer Tools (sonst würde wohl kein Programm mehr laufen). Wenn man verhindern will, dass bestimmte Keys verändert werden, ist daher der Einsatz der Berechtigungen und der Einsatz eines Standardusers ohne Adminrechte der einzig sinnvolle Weg.Der Schlüssel ist aber auch ein typischer Angriffspunkt für Malware: Verwendet man einen Benutzer mit Adminrechten bei der täglichen Arbeit am Computer, kann ausgeführte Schadsoftware das Bearbeiten der Registry sehr leicht sperren.
Weblinks
Wikimedia Foundation.