Der folgende Text ist eine Nachlese auf den Vortrag von Georgie am 19.1.2017.

Registry, wozu?

Die Speicherorte am PC sind klar getrennt in System, Programm, Benutzer und Einstellungen. Damit einher geht eine Rechtestruktur, die verhindert, dass der Benutzer versehentlich etwas beschädigt, weil er nicht – so wie früher – auch Administratorrechte hat. Der Motor für diese saubere Trennung waren Schadprogramme, die Verstöße gegen diese Trennung ausgenutzt haben und ziemlich freizügig im Bereich der Programme Schaden angerichtet haben.

Zu einer klaren Trennung in unveränderliche Speicherbereiche und veränderbare Speicherbereiche zwingen auch die modernen portablen Geräte, die – anders als der PC – viele der vorinstallierten Programme in Festwertspeichern (ROM) ablegen. Und da Windows auch auf diesen Geräten lauffähig sein muss, wird diese Speicher-Policy der Trennung in beschreibbare und nicht beschreibbare Speicherbereiche auch am PC sichtbar obwohl sie am PC immer in beschreibbaren Specherbereichen abgelegt werden.

Ein Betriebssystem hat eine große Zahl von Einstellungen zu verwalten und speichert diese Einstellungen in einer Datenbank, der so genannten „Registry“. Auch Programme haben Einstellungen zu verwalten und es bietet sich auch für Programme an, mehr oder weniger dieser Einstellungen in der Registry zu speichern.

Da Programme von Windows gerufen werden wollen, müssen sie sich bei Windows bekannt machen. Das Mindeste, was sie daher dem Betriebssystem mitteilen müssen, ist ihr Speicherort und das Symbol unter dem sie aufgerufen werden können.

Dieses Konzept einer zentralen Datenbank ist keineswegs zwingend, genau so gut könnte man diese Daten in den jeweiligen Benutzerspeicherbereichen unterbringen und mit einem einheitlichen Programm auf diese Einstellungsdateien (.ini-Dateien) zugreifen wie uns Linux das demonstriert.

Aber die Entwickler von Windows und von Windows-Anwendungen haben auch das gemeinsame Ziel, dass ihre Programme nicht so einfach auf andere Rechner verschoben werden können. Und dieses Ziel unterstützt das zentralisierte Konzept der Registry, denn auch wenn jemand die Programmdateien kopiert, die Einträge in der Registry lassen sich nicht so einfach portieren. Wenn also jemand mehrere Rechner besitzt und ein erworbenes Programm einmal auf diesem dann auf einem anderen Rechner benutzen will, dann ist das wegen des Konzept der Registry nicht möglich. Für alle, die das dennoch wollen, ist die Benutzung der Portablen Programme ein zweckmäßige und gleichzeitig völlig legaler Ausweg.

Aus meiner Sicht ist dieser Wunsch eines konzeptiven Kopierschutzes das Hauptmotiv für die Zusammenfassung aller Konfigurationsdaten in einer zentralen Datenbank.

Wenn uns das auch nicht gefällt; Ignorieren dürfen wir deshalb die Registry nicht und daher werden wir uns in diesem Beitrag mit einigen Details beschäftigen, die uns Georgie beim Clubabend am 19.1.2017 vorgestellt hat. Die erwähnten Foliennummern beziehen sich auf folgende Datei: Folien vom Vortrag

Aufbau der Registry

Wer den Dateibaum eines Windows-Explorers kennt, ist eigentlich auch schon mit der Registry vertraut, denn die Registry ist ganz genau so aufgebaut. Nur heißen die „Ordner“ in der Registry „Keys“ und in jedem Ordner können (wie im Dateisystem) weitere Ordner sein und jeder Ordner kann auch Dateien enthalten, das sind in der Registry „Namen-Werte-Paare“.

Die folgende Tabelle vergleicht das Windows-Dateisystem mit der Windows-Registry:

Windows-Dateisystem Windows-Registry
Programm Windows-Explorer Regedit
Aufruf mit Windows-E Windows-R „regedit“
Oberste Ebene Laufwerke
C:\, D:\…
Hauptschlüssel
HKEY_LOCAL_MACHINE,
HKEY_USERS (Folie 7, 8)
Untere Ebenen,
beliebig verschachtelt
Ordner Schlüssel (Key)
Inhalt eines Ordners Datei Name-Wert-Paar (Folie 11)
Dateityp (Extension) Typ des Werts (Folie 10)
Virtuelle Ordner Desktop, Papierkorb… HKEY_CLASSES_ROOT,
HKEY_CURRENT_USER,
HKEY_CURRENT_CONFIG
Gespeichert in Dateisystem (FAT32, NTFS) Hives (Folie 23)

HKEY = „Handle to a Key“

Die virtuellen Ordner am PC sind künstliche Zusammenstellungen von Teilbäumen, die man auch anderswo in der Explorer-Ansicht gefunden hätte, nur eben ziemlich versteckt. Genau so ist das in der Registry. Wegen der praktischeren Handhabung werden Teile der Schlüsselstrukturen an die oberste Ebene gespiegelt, um die Navigation zu erleichtern.

Während bei Windows die Speicherung der Struktur des Dateisystems von der Festplatten-Formatierung abhängt (FAT32 oder NTFS), werden bei der Registry die Daten in Dateien abgelegt, die „Hives“ (=“Honigwaben“?) genannt werden. Wo diese Hives gespeichert sind, zeigt Folie 23.

Datentypen

Georgie hat in Folie 10 im Testkey 00TEST alle verfügbaren Datentypen dargestellt.

Die Zeile (Standard) ist ein voreingestellter Name, der mit dem Schlüssel zusammenhängt. Jeder Schlüssel hat also zumindest diesen einen Eintrag. Man kann (Standard) nicht löschen. (Standard) ist oft leer, kann aber auch einen Wert enthalten.

Alle unter einem Key eingetragenene Namen können einen der folgenden Datentypen haben:

REG_SZ Zeichenkette (String)
REG_MULTI_SZ Mehrere Zeichenketten
REG_EXPAND_SZ Zeichenkette, die auch eine Umgebungsvariable enthalten kann, die dann bei Aufruf expandiert wird
REG_DWORD eine 32-Bit-Zahl, sehr oft als ON/OFF-Schalter eingesetzt und hat dann die Werte 0x00000000 oder 0x00000001
REG_QWORD eine 64-Bit-Zahl
REG_BINARY eine binäre Zahlenfolge. Hie können sogar kleine Programme gespeichert werden

Was wird eigentlich in der Registry gespeichert?

Die Registry dient eigentlich zur Vereinheitlichung der Aufgaben des Betriebssystems. Wenn das Betriebssystem den Benutzerbildschirm aufbaut und auf die Wünsche des Benutzers eingeht, greift es auf Einstellungen in der Registry zurück. Ein schönes Beispiel zeigt Folie 16, die zeigt, wie die Standardanwendung zu einer bestimmten Dateiendung eingetragen wird (Im Beispiel für die Datei-Erweiterung .zip). Folie 17 zeigt, wie Windows herausfindet, wo die Anwendung WinRAR.ZIP eigentlich gespeichert ist und wie die zugehörige .exe-Datei heißt. Weiter sieht man, wie im Key shell ein weiteres Kommando eingefügt wird, das man dann als Anwender bei Aufruf des Kontextmenüs (Folie 19) zu sehen bekommt („Noch ein Open“).

Was speichern Programme in der Registry?

Ein konkretes Programm muss genaugenommen gar nichts in der Registry speichern. Es ist dann aber ein „vagabundierendes“ Programm, dessen Existenz man sich merken muss, denn im Startmenü scheint es nicht auf, es sei denn, man würde dort händisch einen Link zum Programm einstellen. Ein gewisses Minimum an Einträgen wird daher immer in der Registry gespeichert sein, damit das Programm aus Windows gerufen werden kann. Georgie hat uns ein sehr schones Beispiel dafür gezeigt, wie der OwnCloud-Client Registry und Konfigurationsdatei gleichzeitig nutzt.  In Folie 28 sieht man den Inhalt der Konfigurationsdatei owncloud.cfg. In dieser Textdatei wird darauf hingewiesen, dass der Speicherort für die OwnCloud-Daten auf D:/Users/georgie/ownCloud ist und man allein durch Editieren dieser Zeile und manuelles Verschieben der Daten an den neuen Ort den Speicherort der OwnCloud-Daten bequem verschieben kann, ohne dass die Daten vom Server neu geladen werden müssten. Diese Daten hätten genauso gut in der Registry stehen können. Wo man sie daher findet, muss man selbst recherchieren.

Import-Export

Eine sehr hübsche Eigenschaft der Registry ist die Möglichkeit, einen Schlüssel mit allen seinen Unterschlüsseln als Textdatei (.reg) zu exportieren. Das zugehörige Icon sieht man im Bild links. Man kann diese Datei dann als Text editieren (so wie bei einer .ini-Datei) und durch einen Doppelklick auf den Dateinamen wieder in die Registry einfügen. Dabei muss man aber beachten, dass es nicht zu einem vollständigen Ersetzen der Registry-Daten kommt, sondern zu einem „Zusammenführen“ („Merge“).

Wurde ein Wert geändert, wird diese Änderung in der Registry eingetragen. Wurde aber ein Wert gelöscht, dann ist dieser Wert nach dem Zusammenführen nicht weg, weil er in der Registry noch enthalten ist und daher bestehen bleibt.

Anwendungsmöglichkeiten sind folgende: Experimentiert man mit einem Schlüssel und seinen Unterschlüsseln, dann kann man den Schlüssel vor den Veränderungen als Textdatei speichern. Sollte etwas misslingen, kann man den ursprünglichen Zustand leicht wiederherstellen.

Administratoren, die bestimmte Einstellungen eines neuen PC rasch vorkonfigurieren wollen, speichern diese Einstellungen in einer solchen .reg-Datei und können viel Handarbeit mit einem Klick sehr zeitsparend erledigen.

Tools

Grundsätzlich wurde im Vortrag auf einen sparsamen Umgang mit Registry-Tools hingewiesen. Georgie erwähnt die Toolbox „jv16 PowerTools X“, die man 60 Tage kostenlos testen und danach um 30 $ kaufen kann. Es sind aber nicht nur Registry-Tools sondern auch viele weitere Tools in dem Paket enthalten.

Tools bei den Portablen Programmen

Die folgenden Programme sind auf unserer Sammlung Portabler Programme enthalten. Gut verwendbar sind RegShot und RegScanner, eventuell MJ Registry Watcher.

MJ Registry Watcher

Das Programm installiert sich als Dienst und überprüft zyklisch den Zustand der Startkonfiguration (Dateien und Registry-Keys) auf Veränderung durch eventuelle Viren.

RegASSASSIN

Entfernt einen Key aus der Registry, der vom System blockiert wird. (Wurde nicht getestet.)

RegFromApp

Das Programm zeichnet Änderungen in der Registry auf, die ein auswählbarer Prozess vornimmt. Leider funktioniert das Programm nicht. Letztes Update 2010. Es gibt kein Update. Nicht verwendbar.

Registry Tweaker

Das Programm ist mit 2007 datiert und die zugehörige Website existiert nicht mehr. Man muss abraten, das Programm zu verwenden.

RegScanner

Beim RegScanner gibt man eine zu suchende Zeichenkette ein, dazu kommen verschiedene Optionen und startet den Suchlauf. Das Programm stellt alle Fundorte fest und listet sie in einer langen Liste. Man hat also einen guten Überblick und muss nicht – wie beim Regedit – von Fund zu Fund springen.

Das Programm ist „nicht-invasiv“. Es findet alles aber wenn man etwas ändern möchte, muss man über das Kontextmenü den betreffenden Schlüssel in Regedit öffnen und bearbeiten.

Regshot

Vergleich zwei Zustände der Registry. Zwischen den beiden Schnappschüssen führt man das zu untersuchende Experiment aus,

Der Ordner, in dem dieser Schnappschuss abgelegt wird, ist %SYSTEMDRIVE%\Hive. Ich habe am Desktop einen Ordner „Registry“ angelegt und dort Ordner auf s:\desktop\registry geändert.Klickt man auf „Schnappschuss 1“ kann man aus mehreren Haupt-Keys wählen. Danach wählt man „1. Schnappschuss“ -> Speichern.

Dann macht man die Änderungen, die man durch die beiden Schnappschüsse beobachten will und fertigt den 2. Schnappschuss an.

Danach legt das Programm einen Report als Html-Datei an und man kann die Unterschiede zwischen den beiden Zuständen untersuchen.

Links

 

 

 

 

 

Zur Werkzeugleiste springen