Kapitel 7   Die Registrierung

Bei jedem, der mit Windows NT, Windows 95 oder Windows 98 vertraut ist, sollten beim Begriff Registrierung Bilder des Registrierungs-Editors und vieler anderer Dinge aufkommen. Die Registrierung wird einerseits unbedingt benötigt und Sie sollten sich damit auskennen. Andererseits ist der Umgang mit der Registrierung auch gefährlich und es entstehen ernsthafte Probleme, wenn die Registrierung falsch bearbeitet wird. An eines sollten Sie immer denken: Um einen Windows-Computer völlig unbrauchbar zu machen, brauchen Sie nur die Registrierung durcheinander zu bringen. Dieses Kapitel beschreibt sichere Methoden zum Umgang mit der Registrierung. Die Wahrscheinlichkeit, dass Probleme auftreten, ist damit geringer.

Dieses Kapitel behandelt die folgenden Themen:

Als Erstes wird nun geprüft, welche Rolle die Registrierung in der Windows 2000-Architektur spielt.

7.1 Was ist die Registrierung?

Die Registrierung ist eine umfassende, hierarchische Datenbank, die permanente Informationen enthält, die sowohl vom Betriebssystem als auch von allen installierten Anwendungen benötigt werden. Die Registrierung ist im Ordner %Systemroot%\system32\config enthalten. Diese Dateien heißen Security, System, Software und Default. Und es gibt noch eine weitere Datei im Verzeichnis %Userprofil% namens Ntuser.dat.

Die Registrierung enthält alle Einstellungen, die vom Betriebssystem und den meisten Anwendungen verwendet werden. Das Betriebssystem speichert alles, wodurch sich das Setup eines Computers von dem anderer Computer unterscheidet, wie z.B. die TCP/IP-Adresse, den Computernamen, die installierten Drucker und Ähnliches in der Registrierung. Alle Einstellungen, die in Windows 2000 vorgenommen werden können, werden in die Registrierung eingetragen.

Die Registrierung wird in einem proprietären Format von Microsoft gespeichert. Sie lässt sich nur mit einem Registrierungs-Editor oder einer Anwendung öffnen, die die passenden Win32-API-Aufrufe vornimmt. Eine Anwendung darf auf alle Registrierungsschlüssel zugreifen, auf die der Benutzer, der die Anwendung gestartet hat, Zugriff hat.

7.2 Die Struktur der Registrierung

Ohne Ordnung herrscht das Chaos. Microsoft hat Standards dafür eingeführt, wie Informationen in der Registrierung strukturiert sein sollten und wie Daten in der Registrierung gespeichert werden. Die Registrierung wird in Windows 2000 mit denselben Berechtigungen gesichert wie Dateien. Diese Berechtigungen existieren selbst dann, wenn die Systempartition keine Sicherheit auf Dateiebene unterstützt.

Die Registrierung ist hierarchisch aufgebaut. Deshalb gibt es eine oberste Ebene. Eigentlich sind es sogar vier oberste Ebenen, weil die Registrierung vier verschiedene Datenbanken enthält, die als Teilstrukturen bezeichnet werden. Diese vier Teilstrukturen heißen Classes, Users, Local Machine und Current Configuration. Die Registrierung enthält zwei Arten von Elementen: Schlüssel und Werte. Ein Schlüssel entspricht einem Ordner in einem Dateisystem. Der Ordner enthält jedoch keine Dateien, sondern Werte oder Teilschlüssel. Jeder Schlüssel hat mindestens einen Wert namens (Standard) und kann auch wesentlich mehr Werte enthalten. Jede Hierarchie ist etwas anders aufgeteilt und soll nun nachfolgend beschrieben werden.

7.2.1 Die Teilstruktur Classes

Die Teilstruktur Classes mit der Bezeichnung HKEY_CLASSES_ROOT wird in der Registrierungsdatei System gespeichert. Sie speichert die Einstellungen und die Registrierung für OLE oder ActiveX (Microsoft ändert die Bezeichnung dieser Architekturkomponenten häufiger). Diese Teilstruktur ist ziemlich umfangreich, selbst wenn keine Anwendungen geladen sind.

Haben Sie sich jemals gefragt, wie Microsoft Word gestartet wird, wenn Sie doppelt auf eine Datei mit der Erweiterung .doc klicken? Die Teilstruktur Classes enthält mehrere hundert Teilschlüssel, die festlegen, wie Programme für verschiedene Erweiterungen ausgeführt werden. Die Schlüssel beginnen alle mit einem Punkt und sind in alphabetischer Reihenfolge aufgelistet. Der gewünschte Schlüssel lässt sich also leicht finden. Jeder dieser Schlüssel hat einen Standardwert, der auf den Klassennamen zeigt, der verwendet werden soll (für .doc ist Word.Document.8 der Standardwert, falls Microsoft Word 2000 auf dem System installiert ist).

Die nächste Gruppe von Schlüsseln in der Teilstruktur Classes enthält die Namen der Klassen, die auf dem Computer installiert sind, und eine Angabe, wie der Zugriff darauf erfolgt. Für viele dieser installierten Klassen existieren zwei verschiedene Schlüssel. Der erste Schlüssel ist versionsunabhängig und der zweite versionsabhängig. Für Microsoft Word 2000 gibt es z.B. einen Schlüssel Word.Document und einen Schlüssel Word.Document.8. Der Schlüssel Word.Document zeigt auf den Schlüssel Word.Document.8, der wiederum auf Microsoft Word zeigt.

Die meisten dieser Klassen verfügen über mindestens zwei Teilschlüssel, d.h. untergeordnete Schlüssel. Der erste heißt CLSID und der zweite heißt CurVer. Der Teilschlüssel CLSID hat einen Standardwert, der dem GUID (Globally Unique Identifier) für das Objekt entspricht. Der Standardwert des Teilschlüssels CurVer ist die Versionsbezeichnung der Anwendung. Der Teilschlüssel CurVer des Schlüssels Word.Document hat deshalb den Standardwert Word.Document.8. Wenn Sie weiter unten in der Liste einen Blick in den Schlüssel Word.Document.8 werfen, sehen Sie die Teilschlüssel der Anwendung, den Pfad, in dem das Programmsymbol für die Verwendung im Explorer abgelegt ist und einen Schlüssel, der dem Betriebssystem erklärt, wie eine Datei geöffnet werden muss, wenn darauf doppelt geklickt wird. Der Schlüssel Word.Document.8 enthält auch den GUIF für die Klasse, der wie folgt aussieht:

{00020906-0000-0000-C000-000000000046}

Alle Klassen sind mit einem ähnlichen GUID ausgestattet. Über den GUID wird die Klasse eindeutig identifiziert.

7.2.2 Die Teilstruktur Users

Die Teilstruktur Users mit der Bezeichnung HKEY_CURRENT_USER enthält die benutzerdefinierten Einstellungen für alle Anwendungen und für das Betriebssystem. Die Teilstruktur Users enthält auch das so genannte Benutzerprofil, das alle Einstellungen vom Hintergrundbild für den Desktop bis zur Platzierung eines Fensters am Bildschirm enthält. Die Benutzer werden ärgerlich, wenn bei diesen Einstellungen etwas schief geht, und das mit gutem Grund. Es dauert ziemlich lange, alles so einzurichten, dass es »passt«. Im Registrierungs-Editor, der in Kürze in diesem Kapitel behandelt wird, gibt es auch einen Eintrag HKEY_CURRENT_USER. Dieser Eintrag ist eigentlich eine Verknüpfung zur Teilstruktur HKEY_USERS und enthält die Einstellungen des Benutzers, der momentan beim Computer angemeldet ist.

Die Teilstruktur Users ist in zwei Bereiche aufgeteilt. Der eine Bereich heißt .DEFAULT und enthält die Standardeinstellungen, die einem neuen Benutzer präsentiert werden, wenn er sich das erste Mal bei dem System anmeldet. Die restlichen Einträge sind GUIDs für alle Benutzer und enthalten ein Profil für jeden Benutzer, der sich bei dem Computer angemeldet hat.

Wenn sich ein Benutzer anmeldet, wird überprüft, ob er sich das erste Mal bei diesem Computer anmeldet. Hat er sich bereits zuvor angemeldet, wird der HKEY_CURRENT_USER-Schlüssel mit dem GUID für diesen Benutzer verknüpft. Meldet sich der Benutzer zum ersten Mal an, wird ein neuer Eintrag mit dem GUID für den Benutzer erzeugt. Anschließend wird der Inhalt des Standardbenutzers im Schlüssel .DEFAULT in den Schlüssel des neuen Benutzers kopiert. Wenn Veränderungen für alle Benutzer vorgenommen werden sollen, die sich jemals bei einem Computer anmelden, sollten diese am Standardbenutzer im Schlüssel .DEFAULT vorgenommen werden. Die Änderungen gelten dann für alle Neuanmeldungen, nicht aber für bereits bestehende Benutzer.

Um ein Benutzerprofil aus der Teilstruktur HKEY_USERS zu entfernen, klicken Sie mit der rechten Maustaste auf das Symbol Arbeitsplatz auf dem Desktop und wählen im Kontextmenü den Befehl Eigenschaften. Wechseln Sie dann zur Registerkarte Benutzerprofile. Hier sehen Sie die Benutzerprofile, die auf dem lokalen Computer eingerichtet wurden. Löschen Sie Profile, indem Sie diese markieren und auf die Schaltfläche Löschen klicken. Manche Profile lassen sich nicht löschen. Das Profil des aktuell angemeldeten Benutzers und das des Administrators lassen sich nicht löschen.

Je nachdem, was auf dem lokalen Computer installiert ist, kann die Teilstruktur für einen einzelnen Benutzer zahlreiche verschiedene Einstellungen enthalten. Das Element Network enthält z.B. alle Schlüssel für Laufwerkbuchstaben, zu denen der Benutzer eine Verbindung hergestellt hat und die bei der nächsten Anmeldung wiederhergestellt wird. Jeder Schlüssel für einen Laufwerkbuchstaben enthält Einträge, deren Werte Windows 2000 mitteilen, wie die Verbindung zum Laufwerk bei der Anmeldung hergestellt werden kann, wie z.B. RemotePath mit dem Pfad zum verbundenen Laufwerk oder ProviderName mit dem Netzwerkanbieter (wie Microsoft Windows-Netzwerk für Windows 2000 oder Einträge für andere Netzwerkbetriebssyteme). Außerdem wird der Benutzername (UserName) gespeichert (im Format DOMAIN\USER), sodass die Verbindung wiederhergestellt werden kann.

Ein weiterer interessanter Schlüssel heißt Software. Dieser Schlüssel enthält Daten für alle Anwendungen, die auf dem Computer gespeichert sind. Die Daten sind nach Softwarehersteller und Anwendung geordnet. Die Software Adobe Acrobat erzeugt z.B. einen Schlüssel für Adobe und einen Teilschlüssel für Acrobat. Unterhalb des Schlüssels für die Anwendung, wie z.B. Acrobat, werden zahlreiche Teilschlüssel eingerichtet. Diese gehören jedoch vollständig in den Zuständigkeitsbereich des Softwareherstellers und letztendlich den des Programmierers.

7.2.3 Die Teilstruktur Local Machine

Die Teilstruktur Local Machine enthält vom Benutzer unabhängige Informationen für den lokalen Computer. Dies bedeutet, dass alle Informationen, die den Start des Computers, Hardwareschnittstellen sowie Informationen betreffen und die die Software allgemein zur Ausführung benötigt, in diesem Teil der Registrierung gespeichert werden.

Der Teilschlüssel Hardware enthält Informationen über die Hardware, die im lokalen Computer erkannt wurde. Ein interessanter Teilschlüssel dieses Schlüssels heißt DEVICEMAP. Er listet die gesamte Hardware des Computers auf wie die Tastatur, parallele und serielle Anschlüsse und SCSI-Adapter.

Selbst wenn nur IDE- oder ATAPI-Laufwerke in den lokalen Computer eingebaut sind, ist der Teilschlüssel Scsi im Schlüssel HKEY_LOCAL_ MACHINE\Hardware enthalten. Das Treibermodell von Windows 2000 behandelt IDE-Laufwerke wie SCSI-Laufwerke. Diese Vorgehensweise ist bei modernen Betriebssystemen üblich, weil der SCSI-Standard sehr ausgereift ist und alles unterstützt, was auch der IDE/ATAPI-Standard unterstützt.

Der Schlüssel SECURITY, der der Teilstruktur HKEY_LOCAL_MACHINE direkt untergeordnet ist, kann nur vom Betriebssystem gelesen werden. Er enthält alle Benutzerkonten und Sicherheitsinformationen wie die Namen der Benutzerkonten, der Gruppen, die verschlüsselten Kennwörter etc.

Der Schlüssel SOFTWARE ist dem gleichnamigen Schlüssel in der Struktur HKEY_CURRENT_USER sehr ähnlich, der bereits beschrieben wurde. Er enthält Informationen für Anwendungen auf dem lokalen Computer, die sich nicht von Benutzer zu Benutzer ändern. Der Pfad zu den Datendateien der Anwendung oder die Registrierungsinformationen für die Anwendung werden normalerweise in diesem Teil der Registrierung gespeichert.

Der Schlüssel SYSTEM ist der interessanteste Schlüssel der Struktur HKEY_LOCAL_MACHINE. Dieser Schlüssel enthält alle Windows 2000-Einstellungen für den lokalen Computer. Er enthält drei Teilschlüssel namens CurrentControlSet, ControlSet001 und ControlSet002. Diese drei Teilschlüssel enthalten redundante Informationen darüber, wie das Betriebssystem eingerichtet ist. Der Grund für diese Redundanz ist, dass bei Änderungen in der Registrierung durch Software der Benutzer die vorherigen funktionierenden Einstellungen aus einer der Sicherungskopien wiederherstellen kann. Mehr zur letzten, als funktionierend bekannten Konfiguration erfahren Sie im letzten Abschnitt in diesem Kapitel.

Der Schlüssel CurrentControlSet enthält einige interessante Teilschlüssel. Der erste davon, der Teilschlüssel Control, enthält alle Hardwaretreibereinstellungen und Netzwerkeinstellungen für den lokalen Computer. Der Teilschlüssel Class enthält, nach GUID sortiert, einen Schlüssel für jeden Gerätetreiber, der auf dem System installiert ist. Diese Teilschlüssel enthalten Informationen über den Treiber, wie z.B. Angaben zum Hersteller, zum Pfad des Treibers und einen benutzerfreundlichen Namen für den Treiber.

Der Schlüssel ComputerName enthält vor allem den Computernamen. Der Teilschlüssel ActiveComputerName ist der aktuelle Name des Computers und der Schlüssel ComputerName ist der Name, den der Computer beim nächsten Bootvorgang tragen wird.

Der Schlüssel hivelist enthält eine Liste aller Teilstrukturen der Registrierung und die Angabe, welche Dateien die Teilstrukturen enthalten. Die Informationen sind in einer Form gespeichert, die den Pfad zu den Dateien eindeutig identifiziert:

\Device\HarddiskVolume1\WINNT\System32\CONFIG\SOFTWARE

Dieses Format identifiziert die Lage der Datei ohne Laufwerkbuchstaben eindeutig. Auf diese Weise lässt sich der Laufwerkbuchstabe verändern und das Betriebssystem kann trotzdem noch starten.

Der Schlüssel WOW enthält Informationen, die vom System Windows in Windows benutzt werden. Dieses System dient dazu, 16-Bit-Windowsanwendungen unter Windows 2000 auszuführen. Er enthält Informationen darüber, wie dieses System gestartet wird und, was wahrscheinlich wichtiger ist, die DLLs, die benötigt werden, um die Software auszuführen.

Ein weiterer Schlüssel unter CurrentControlSet heißt Services und legt fest, wie die Dienste des Betriebssystems gestartet werden. Jeder Teilschlüssel des Schlüssels Services enthält bestimmte Werte, die dem Services-Teilsystem dabei helfen, die verschiedenen Dienste zu starten. Die meisten Schlüssel enthalten den Eintrag DisplayName, der angibt, wie ein Dienst in einer Dienstliste angezeigt wird. Der Schlüssel ErrorControl legt fest, was im Falle eines Fehlers zu tun ist. In den meisten Fällen ist dieser Schlüssel auf den Wert 1 gesetzt. Dadurch wird im Falle eines Fehlers ein Ereignis hervorgerufen und ein Hinweis eingeblendet, dass ein Dienst nicht gestartet werden konnte. Der Eintrag ImagePath enthält den Pfad zur ausführbaren Datei. Für Dienste, die über den Pfad Winnt gestartet werden, ist der angegebene Pfad relativ zur Variablen %Systemroot%. Für Dienste, die an einer anderen Stelle installiert sind, sind ein Laufwerkbuchstabe und ein vollständiger Pfad zulässig (nur mit 8+3-Dateinamen), wobei der Pfad C:\Program Files durch C:\PROGRA~1 ersetzt wird.

Der Eintrag Start legt fest, wie oder ob ein Dienst startet. In dieser Liste sind einige Dienste aufgeführt, die ganz klar nicht für den lokalen Computer gelten. Bei den meisten handelt es sich um SCSI-Adapter. Diese Schüssel haben einen Startwert von 0. Bei der Startreihenfolge der Dienste werden zuerst die Dienste mit dem Wert 1 gestartet, dann alle Dienste mit dem Wert 2 etc. Auf diese Weise lässt sich der Start von Diensten verzögern und es können Abhängigkeiten eingerichtet werden.

Die Teilstruktur HKEY_LOCAL_MACHINE enthält alles, was Windows 2000 wissen muss, um erfolgreich zu starten. Ein Großteil der Problembehandlung besteht darin, diese Teilstruktur zu prüfen und Änderungen vorzunehmen. Jedes Gerät, das installiert wird, nimmt Änderungen an dieser Teilstruktur vor und es ist sehr wichtig zu verstehen, wie diese Änderungen Windows 2000 beeinflussen.

7.2.4 Die Teilstruktur Current Configuration

Die Teilstruktur Current Configuration wird unter der Bezeichnung HKEY_CURRENT_CONFIG angezeigt. Sie enthält temporäre Informationen über die Konfiguration des lokalen Computers, wie z.B. Informationen zum PCI-Setup, Konfigurationsinformationen über PCMCIA, Einstellungen der aktuellen Bildschirmauflösung etc. Diese Informationen werden verworfen, wenn das System heruntergefahren wird und ändern sich, wenn andere Anwendungen ausgeführt werden.

7.3 Die Benutzung der Registrierung durch Anwendungen

Microsoft stellte Anwendungen die Registrierung zur Verfügung, damit diese allgemeine Einstellungen sowie Einstellungen, die vom Benutzer vorgenommen wurden, speichern konnten. Dies ermöglicht es Benutzern, Einstellungen des Betriebssystems wie den Hintergrund und das Farbschema zu verändern, ohne andere Benutzer zu beeinflussen.

Wenn sich eine Anwendung selbst installiert, verändert sie verschiedene Teile der Registrierung, die die Anwendung initialisieren. Die meisten Anwendungen installieren ihre Erweiterungen in der Teilstruktur HKEY_CLASSES und installieren dann grundlegende Benutzereinstellungen und Informationen zur Anordnung der Fenster in der Struktur HKEY_CURRENT_USER.

Für Dienste wie Microsoft SQL Server werden Informationen überall in der Registrierung gespeichert. Die Clienttools registrieren ihre Erweiterungen und die Serverkomponenten erzeugen Einträge im Schlüssel HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services, um den Start des Dienstes zu steuern und im Schlüssel HKEY_LOCAL_MACHINE/Software/Microsoft/MSSQLServer für die Software selbst. Nachdem der Dienst mittels der Informationen im Schlüssel Services gestartet wurde, liest die Anwendung Informationen aus dem Schlüssel Software, um vollständig zu starten. Dies ist ziemlich typisch für Dienstsoftware.

Einige Anwendungen nutzen noch immer Ini-Dateien, um ihre Einstellungen zu speichern. Eine Ini-Datei ist eine Textdatei, die normalerweise im Ordner Winnt in reinem Textformat gespeichert ist. Jede Ini-Datei enthält die Einstellungen für eine Anwendung und das Format. Die Verwendung der Ini-Datei bleibt vollständig dem Programmierer überlassen.

Ein Benutzer kann festlegen, dass bestimmte Programme automatisch gestartet werden, wenn er sich bei einem Windows 2000-Computer anmeldet. Es gibt verschiedene Möglichkeiten, eine Anwendung bei der Anmeldung zu starten. Eine davon besteht darin, einen Eintrag für den Pfad der Anwendung im Schlüssel HKEY_CURRENT_USER\Software\Microsoft\Windows\Run oder im Schlüssel RunOnce anzulegen. Der Benutzer kann auch Anwendungen in der Gruppe AutoStart im Start-Menü ablegen. Die heimtückischste Methode - die meistens von Viren benutzt wird, die automatisch gestartet werden müssen - besteht darin, einen Run-Eintrag in der Datei Win.ini abzulegen. Das Programm wird dann automatisch ausgeführt und es lässt sich nur sehr schwer entdecken. Um festzustellen, ob derartige Einträge in der Datei Win.ini enthalten sind, öffnen Sie diese mit dem Editor. Die Datei Win.ini befindet sich im Ordner C:\Winnt.

Die Registrierungsdatenbank weicht vom typischen Betriebssystem ab. UNIX-typische Betriebssysteme speichern Setup-Daten für den Computer in Textdateien im Verzeichnis /etc und Benutzereinstellungen in Textdateien im Homeverzeichnis des Benutzers. Warum verwendet Windows 2000 die Registrierung, die nur mit einer speziellen Software bearbeitet und gewartet werden kann, und nicht reine Textdateien, die sich mit jedem Texteditor bearbeiten lassen? Auf diese Frage gibt es einige interessante Antworten. Erstens verwendet Windows 2000 einen speziellen Zeichensatz namens Unicode. Unicode-Zeichen beanspruchen pro Zeichen zwei Byte Speicherplatz und können nahezu jedes Zeichen in jeder Sprache dieser Erde repräsentieren. Wenn zwei Bytes 65.536 verschiedene Werte speichern können, sind das sehr viele Zeichen. Weil die Registrierung in der Lage sein muss, Zeichenfolgen in anderen Sprachen zu speichern, sollten diese am besten in Unicode gespeichert werden. Normale Texteditoren können Unicode-Daten nicht bearbeiten, der Registrierungs-Editor schon.

Der zweite Grund für den Einsatz der Registrierung ist, dass sie einen zentralen Ort für alle Systemeinstellungen bietet. Sie bietet Anwendungen einen einheitlichen Zugriffsmechanismus. Dies ist ein komfortabler Standarddienst für ein Betriebssystem.

Dieses System wird von vielen Programmierern angegriffen; es repräsentiert für sie eine Folge falscher Designentscheidungen. Deshalb benutzen diese Programmierer die Registrierung nicht, um Einstellungen zu speichern. Ein Grund für diese Entscheidung ist, dass die Installation einer Anwendung ziemlich komplex wird, wenn Einträge in der Registrierung abgelegt werden müssen. Um eine Anwendung zu installieren, muss ein Setup-Programm geschrieben werden, das alle Einstellungen in der Registrierung ablegt, anstatt einfach nur einen Stapel Dateien zu kopieren und das Programm auszuführen.

In einer Unternehmensumgebung ist es sehr aufwändig sicherzustellen, dass alle Benutzereinstellungen übernommen werden, wenn ein Programm eingerichtet, angepasst und an mehrere tausend Benutzer verteilt werden muss. Programme dokumentieren nicht, welche Registrierungseinstellungen sie benutzen. Es wird also ziemlich schwierig herauszufinden, was ein Programm benötigt. Eine neue Art von Dienstprogramm wurde einfach nur zur Analyse der Registrierung erzeugt um herauszufinden, welche Einstellungen ein bestimmtes Programm vornimmt, um das Setup-Programm für dieses Programm erzeugen zu können. Ein weiterer Industriezweig hat sich darauf spezialisiert, nicht benutzte Registrierungseinträge für Programme, die bereits gelöscht wurden, aus der Registrierung zu entfernen.

Ein Nachteil der Registrierung ist auch, dass sich alles auf einen Punkt konzentriert. Tritt ein Fehler auf, wenn z.B. eine der Dateien, die Registrierungsinformationen enthält, beschädigt wird, startet das Betriebssystem möglicherweise nicht mehr. Wenn also ein Benutzer z.B. ein Spiel spielt und der Teil der Registrierung, der die Einstellungen des Spiels enthält, durcheinander gerät, wird der Computer möglicherweise nicht mehr gestartet. Wenn die Einstellungen des Spiels dagegen in einer separaten Datei gespeichert würden und diese Einstellungen beschädigt sind, ließe sich zwar das Spiel nicht mehr starten, aber der Computer würde korrekt funktionieren. Ein weiterer Einwand gegen die Registrierung ist, dass mehr als hundert Hürden übersprungen werden müssen, um Software auf einer Win32-Plattform auszuführen. Deshalb benutzen viele Multiplattformanwendungen die Registrierung nicht oder nur in geringem Umfang.

7.4 Der Registrierungs-Editor

Mit dem Registrierungs-Editor kann die Registrierung bearbeitet und betrachtet werden. Da die Registrierung so empfindlich ist, gibt es im Startmenü keine Verknüpfungen zu Registrierungs-Editoren, obwohl Windows 2000 zwei Registrierungs-Editoren enthält. Der eine ist ein Registrierungs-Editor namens Regedit.exe in der Art des Windows 95/98-Registrierungs-Editors mit der Möglichkeit zur Suche und einer sehr angenehmen Benutzeroberfläche. Der andere Registrierungs-Editor heißt Regedt32.exe und entspricht dem Registrierungs-Editor von Windows NT 3.51.

7.4.1 Wann sollte der Registrierungs-Editor benutzt werden?

Es wurde zwar bereits erwähnt, aber es kann nicht oft genug gesagt werden: Mit der Registrierung müssen Sie extrem vorsichtig sein. Wenn Werte in der Registrierung fehlen oder falsch gesetzt sind, können schlimme Dinge passieren. Dazu gehört, dass sich das Betriebssystem nicht mehr starten lässt, dass Dienste nicht gestartet werden, Hardware nicht korrekt funktioniert, Material beschädigt wird (insbesondere Monitore), die Leistung abfällt und die Karrierechancen natürlich auch. Bringen Sie die Registrierung auf keinen Fall durcheinander.

Sie wissen das zwar vielleicht bereits. Sie sollten aber den Registrierungs-Editor nur dann benutzen, wenn es keine andere Möglichkeit gibt, einen Wert zu ändern. Nehmen Sie in der Registrierung keine Einstellungen wie die Auflösung der Grafikkarte oder Ähnliches vor.

7.4.2 Regedit benutzen

Das Programm Regedit.exe sieht aus wie der Registrierungs-Editor von Windows 95/98. Die Benutzeroberfläche ist sehr ansprechend und es gibt eine Suchfunktion, mit der Sie Registrierungseinträge schnell finden können. Um den Registrierungs-Editor zu starten, wählen Sie Start/Ausführen und geben im Dialogfeld Ausführen den Befehl Regedit ein. Der Registrierungs-Editor, den Sie in Abbildung 7.1 sehen, wird daraufhin geöffnet. Beachten Sie, dass die Registrierung mit einer baumähnlichen Struktur angezeigt wird. Da die Registrierung nicht schreibgeschützt ist, sollten Sie sehr vorsichtig sein.

Abbildung 7.1:  Regedit.exe ist der benutzerfreundlichere Registrierungs-Editor.

Die Registrierung arbeitet mit einer Dateistruktur wie im Windows-Explorer. Wenn einem Schlüssel ein Pluszeichen (+) vorangestellt ist, kennzeichnet dies, dass es Teilschlüssel für diesen Schlüssel gibt. Klicken Sie auf das Pluszeichen, wird der Schlüssel erweitert und alle Teilschlüssel sind sichtbar. Um die Teilschlüssel wieder auszublenden, klicken Sie auf das Minuszeichen. Um die Einträge für einen Schlüssel zu betrachten, wählen Sie den Schlüssel aus. Die Einträge und Werte werden nun auf der rechten Seite des Registrierungs-Editors angezeigt. Um einen Schlüssel zu finden, wählen Sie im Menü Bearbeiten den Befehl Suchen und füllen das Dialogfeld Suchen entsprechend aus. Nachdem der Editor den ersten Schlüssel gefunden hat, der mit dem Suchbegriff übereinstimmt, wählen Sie Bearbeiten/Weitersuchen oder drücken die (F3)-Taste, um die Suche mit dem angegebenen Begriff zu wiederholen.

Um einen Schlüssel zu löschen, markieren Sie diesen und drücken die (Entf)-Taste. Seien Sie jedoch vorsichtig. Wenn Sie den falschen Eintrag löschen, resultieren daraus erhebliche Probleme. Wird ein Schlüssel gelöscht, werden damit auch alle Teilschlüssel, Einträge und Werte gelöscht. Dies kann Windows 2000 völlig durcheinander bringen.

Um einen Schlüssel hinzuzufügen, wechseln Sie zum Schlüssel, dem der neue Schlüssel untergeordnet werden soll, und wählen im Menü Bearbeiten den Befehl Neu/Schlüssel. Der neue Schlüssel wird unter dem Namen Neuer Schlüssel #1 hinzugefügt. Sie können ihn jedoch umbenennen. Den Namen können Sie dabei frei wählen. Um den Namen eines vorhandenen Schlüssels zu ändern, klicken Sie auf den Schlüssel und wählen entweder im Menü Bearbeiten den Befehl Umbenennen oder drücken die (F2)-Taste. Ein Beispiel hierfür sehen Sie in Abbildung 7.2.

Abbildung 7.2:  Um einen Schlüssel umzubenennen, wählen Sie im Menü Bearbeiten den Befehl Umbenennen und geben den neuen Namen ein, wie hier Mein Schlüssel.

Um einen Wert hinzuzufügen, klicken Sie auf den Schlüssel und wählen dann im Menü Bearbeiten den Befehl Neu sowie die Art des Wertes, den Sie hinzufügen möchten. Ein Wert des Typs Zeichenfolge kann eine Zeichenfolge speichern, ein Binärwert kann eine Folge von Zahlen speichern und ein DWORD-Wert enthält einen Doppelwortwert (ein aus vier Byte bestehender Integer-Wert). Standardmäßig trägt der neue Wert die Bezeichnung Neuer Wert #1. Sie können ihn jedoch über den Menübefehl Bearbeiten/Umbenennen oder durch Drücken der (F2)-Taste umbenennen. Um dem neuen Eintrag einen Wert zuzuweisen, klicken Sie doppelt darauf. DWORD-Werte werden für Wahr/Falsch-Werte benutzt, wobei 1 wahr ist und 0 falsch. In diesem Fall spielt es keine Rolle, ob Sie einen Wert als Hexadezimal- oder Dezimalzahl eingeben. Zeichenfolgewerte können Sie einfach eintippen. Binärwerte müssen jedoch als Hexadezimalzahl eingegeben werden. Zeichenfolgewerte dienen dazu, Pfadangaben oder andere Zeichenfolgeinformationen zu speichern. Binärwerte speichern Binärdaten wie z.B. codierte Zeichenfolgen. Abbildung 7.3 zeigt, wie ein neuer Zeichenfolgewert eingegeben wird.

Abbildung 7.3:  Um einen Zeichenfolgewert hinzuzufügen, wählen Sie Bearbeiten/Neu/Zeichenfolge. Benennen Sie den Eintrag um und klicken Sie doppelt darauf, um den Wert zuzuweisen.

Registrierungsschlüssel lassen sich auch in Textdateien exportieren und so an einer anderen Stelle nutzen. Wählen Sie dazu im Registrierungs-Editor den Schlüssel, den Sie exportieren möchten und dann im Menü Registrierung den Befehl Registrierungsdatei exportieren. Es öffnet sich das Dialogfeld Registrierungsdatei exportieren, in dem Sie die Option haben, die ausgewählte Teilstruktur oder die gesamte Registrierung zu exportieren.

Registrierungsdateien werden normalerweise exportiert, wenn eine Registrierungsdatei bei mehreren Computern identisch sein muss. Die Änderungen brauchen dann nur an einem Computer vorgenommen zu werden. Anschließend kann die exportierte Teilstruktur in die Registrierungen der restlichen Computer importiert werden. Um eine Registrierungsdatei zu importieren, wählen Sie im Menü Registrierung den Befehl Registrierungsdatei importieren.

Registrierungsdateien sind Textdateien. Sie lassen sich mit einfachen Programmen wie dem Editor öffnen. Wenn Sie mit der rechten Maustaste auf eine Registrierungsdatei klicken, öffnet sich ein Kontextmenü. Der Standardbefehl ist Zusammenführen. Damit wird der Inhalt der Registrierungsdatei zur Registrierung hinzugefügt. Mit dem Befehl Bearbeiten öffnet sich die Registrierungsdatei im Editor und es ist eine Liste mit Schlüsseln und Werten zu sehen. Die Schlüssel stehen in Klammern und die Werte stehen im Format »Mein Wert"="Wert« unter dem entsprechenden Schlüssel. Beim Import wird die Registrierungsdatei mit der Registrierung zusammengefügt. Wenn ein Schlüssel bereits vorhanden ist und Werte existieren, werden die neuen Werte einfach hinzugefügt und die alten bleiben erhalten. Wenn ein Registrierungsschlüssel namens MeineAnwendung z.B. die zwei Werte Wert1 und Wert2 enthält und die folgende Registrierungsdatei importiert wird,

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\MeinUnternehmen\MeineAnwendung]
"Wert3"="42"

enthält der resultierende Schlüssel MeineAnwendung die Werte Wert1, Wert2 und Wert3. Eine Registrierungsdatei kann keine bestehenden Werte oder Schlüssel löschen. Sie kann nur Werte zu bestehenden Schlüsseln hinzufügen oder mit neuen Werten überschreiben. Die Registrierung lässt sich dadurch nicht so leicht durch eine exportierte Registrierungsdatei durcheinander bringen.

Eine weitere nützliche Funktion des Registrierungs-Editors Regedit ist, dass Registrierungsdateien von der Befehlszeile importiert werden können. Mit dem Schalter /s kann das Programm Regedit stillschweigend Registrierungsdateien und damit auch Registrierungseinstellungen ohne Benutzereingaben importieren. Dies ist nützlich, um Registrierungsdateien von einem Anmeldeskript zu importieren.

Das Programm Regedit eignet sich sehr gut für den Import und Export, es gibt jedoch auch einige Probleme. An erster Stelle steht dabei, dass es keine Sicherheit gibt. Bei allen Registrierungsschlüsseln kann Sicherheit nach dem Schema von NTFS zugewiesen werden. Das Programm Regedit.exe bietet jedoch keine Möglichkeit, die Berechtigungen, die den einzelnen Registrierungsschlüsseln zugewiesen wurden, zu bearbeiten. Der zweite Registrierungs-Editor namens Regedt32 bietet diese Möglichkeit. Während Regedit nur die Datentypen Zeichenfolge, Doppelwort und Binärwert zulässt, gibt es im Registrierungs-Editor Regedt32 die zwei zusätzlichen Datentypen REG_MULTI_SZ und REG_EXPAND_SZ.

7.4.3 Änderungen der Registrierung mit Regedit finden

Zu den unangenehmsten Dingen beim Umgang mit der Registrierung gehört es, Änderungen zu verfolgen, die bei der Installation neuer Software vorgenommen wurden. Um Software erfolgreich in einem großen Unternehmen installieren zu können, muss normalerweise ein angepasstes Installationsprogramm erstellt werden, das die Platzierung der Dateien behandeln kann, Verknüpfungen im Startmenü einrichtet und dann die Änderungen in die Registrierung importiert. Das Programm Regedit bietet einige Funktionen, mit denen diese Änderungen leichter vorgenommen werden können. Exportieren Sie vor der Installation der Anwendung die Teilstrukturen HKEY_LOCAL_MACHINE und HKEY_CURRENT_USER und führen Sie anschließend das Setup-Programm aus. Nachdem das Setup beendet wurde, müssen Sie den Computer bei Bedarf neu booten. Exportieren Sie anschließend die beiden Teilstrukturen noch einmal und führen Sie dann an der Eingabeaufforderung das Programm FC aus, das einen Dateivergleich durchführt:

FC UserPreInstall.reg UserPostInstall.reg > UserDiff.txt

Dieser Befehl schreibt die Unterschiede zwischen den beiden Teilstrukturen in eine Datei namens UserDiff.txt. Diese Datei können Sie dann in den Editor laden und die Registrierungseinträge betrachten, die verändert wurden. Viele dieser Einstellungen sind jedoch vielleicht nicht für die Installation relevant. Sie müssen die Datei also sorgfältig prüfen um festzustellen, welche Einstellungen angewendet werden.

7.4.4 Den Registrierungs-Editor Regedt32 nutzen

Die Benutzeroberfläche des Programms Regedt32 ist nicht so angenehm wie die des Programms Regedit. Für jede Teilstruktur gibt es ein separates Fenster, sodass fünf Fenster geöffnet sind. Um Regedt32 zu starten, wählen Sie Start/Ausführen und geben dann regedt32 ein.

Die Navigation erfolgt im Registrierungs-Editor Regedt32 auf die gleiche Weise wie in Regedit. Gehen Sie zum Fenster, das die fragliche Teilstruktur enthält, und suchen Sie dann in der Liste den gewünschten Schlüssel. Schlüssel werden mit Ordnersymbolen repräsentiert und Schlüsseln, die Teilschlüssel enthalten, ist ein Pluszeichen vorangestellt (siehe Abbildung 7.4).

Abbildung 7.4:  Der Registrierungs-Editor Regedt32 sieht ganz anders aus als Regedit.

Um einen Schlüssel hinzuzufügen, wählen Sie im Menü Bearbeiten den Befehl Schlüssel hinzufügen, um einen Wert hinzuzufügen den Befehl Wert hinzufügen. Es öffnet sich das Dialogfeld Schlüssel hinzufügen, in dem Sie einen Namen für den Schlüssel eingeben müssen, bzw. Wert hinzufügen, in dem Sie den Namen und Typ des Werts eingeben müssen. Regedt32 zeigt die Datentypen anders an als Regedit (siehe Tabelle 7.1).

Regedt32-Datentyp Regedit-Datentyp
REG_BINARY Binärwert
REG_DWORD DWORD-Wert
REG_SZ Zeichenfolge
REG_EXPAND_SZ Nicht verfügbar
REG_MULTI_SZ Nicht verfügbar

Tabelle 7.1:   Datentypen für Registrierungs-einträge.

Mit dem Datentyp REG_MULTI_SZ lassen sich mehrere Zeichenfolgen in einem Wert speichern und REG_EXPAND_SZ ist eine normale Zeichenfolge, die in eine Mehrfachzeichenfolge umgewandelt werden kann.

Regedt32 bietet nicht annähernd den Leistungsumfang von Regedit, wenn es um den Ex- und Import von Werten geht. Das Problem ist, dass Regedt32 überhaupt keine Funktion bietet, um Dateien leicht zu importieren. Um einen Registrierungsschlüssel zu sichern, müssen Sie im Menü Registrierung den Befehl Teilstruktur speichern unter wählen und einen Dateinamen angeben. Die Datei, die beim Export erzeugt wird, lässt sich nicht importieren.

Um die Sicherheitseinstellungen eines Registrierungsschlüssels zu ändern, wählen Sie den Schlüssel und anschließend im Menü Sicherheit den Befehl Berechtigungen. Es öffnet sich das Dialogfeld Berechtigungen, das Sie bereits von Dateien her kennen. Wie beim Zugriff auf Dateien ist es auch hier möglich, den Zugriff auf die Registrierung zu überwachen. Die Überwachungsprotokolle werden wie die Überwachungsprotokolle für eine Datei in der Ereignisanzeige gespeichert. Dadurch lassen sich die Registrierungseinstellungen überwachen und Änderungen der Registrierung werden aufgezeichnet. Die Überwachungsprotokolle werden in der Ereignisanzeige unter den Sicherheitsprotokollen aufgeführt.

7.5 Die letzte, als funktionierend bekannte Konfiguration benutzen

Trotz aller Warnungen in diesem Kapitel und der offiziellen Warnungen von Microsoft nehmen Benutzer manchmal Änderungen an der Registrierung vor, durch die sich Windows 2000 nicht mehr erfolgreich starten lässt. Was passiert als Nächstes? Glücklicherweise haben die Entwickler von Windows 2000 diese Möglichkeit mit einbezogen und eine Funktion namens Letzte als funktionierend bekannte Konfiguration integriert.

Während des Startvorgangs liest Windows 2000 die Informationen, die benötigt werden, um den Teil der Registrierung auszuführen, der im Schlüssel CurrentControlSet enthalten ist. Wenn Windows 2000 den Startvorgang erfolgreich durchgeführt hat, wird zu dem Zeitpunkt, zu dem der Anmeldebildschirm eingeblendet wird, eine Verknüpfung zu den Schlüsseln ControlSet001 und ControlSet002 hergestellt und die aktuellen Einstellungen werden über diejenigen im Schlüssel ControlSet001 kopiert. Wenn das System beim Startvorgang nicht bis zu dieser Stelle kommt, wird die letzte, als funktionierend bekannte Konfiguration benutzt. Dazu werden die Einstellungen aus dem Schlüssel ControlSet001 statt aus dem Schlüssel CurrentControlSet gelesen und somit werden die fehlerhaften Registrierungseinträge umgangen.

Um auf die letzte, als funktionierend bekannte Konfiguration zuzugreifen, starten Sie den Computer neu und drücken im Betriebssystemauswahlmenü die Taste (F8). Sie können nun die Option Letzte als funktionierend bekannte Konfiguration wählen und mit den Registrierungseinstellungen starten, die vor dem letzten Neustart verwendet wurden. Wenn der Computer schon sehr lange nicht mehr neu gestartet wurde, sind die Einstellungen vielleicht völlig veraltet, aber es fehlen die Einstellungen, die den Neustart verhindert haben. Deshalb sollten Sie vor jeder Veränderung der Registrierung den lokalen Computer neu starten.


© Copyright Markt+Technik Verlag, ein Imprint der Pearson Education Deutschland GmbH
Elektronische Fassung des Titels: Windows 2000 Server Kompendium, ISBN: 3-8272-5611-9 Kapitel: Die Registrierung