Verfahren zur Registry Maintenance (Win 95 und 98)

(c) W. NÄSER 10/99 ff.

Das "Allerheiligste" (und, was den Benutzer angeht, Wertvollste) in Windows 95 ist die sog. Registrier-Datenbank (Registry), sie besteht aus zwei mit +hid / +sys geschützten Dateien:
1. SYSTEM.DAT
und
2. USER.DAT
,
beide durch ein automatisches Backup *.DA0 gespiegelt. (2), nur jeweils 1/10 bis 1/8 so groß wie (1), enthält rein benutzerbezogene Daten, während (1) alle Einzelheiten zur Hardwarekonfiguration und zum Softwarebestand dokumentiert.

Die Registry enthält alles, was unter Win 3.11 in *.ini-Dateien gestanden hätte, und noch vieles mehr, so z.B. die von Ihnen eingegebenen Serien-Nummern und sonstigen Lizenzierungsdaten für die Installation kompletter Anwendungen.

Die Registry ist pfad-mäßig (hierarchisch) gegliedert nach Haupt- und Unterschlüsseln (keys) - entsprechend dem Directory-Strukturbaum einer mit vielen Anwendungen und Daten bespielten Festplatte.

Die Haupt-Schlüssel sind:
HKEY_CLASSES_ROOT  1)
HKEY_CURRENT_USER  2)
HKEY_LOCAL_MACHINE  3)
HKEY_USERS  4)
HKEY_CURRENT_CONFIG  5)
HKEY_DYN_DATA  6)

In (4) finden Sie z.B. folgende Substruktur:
HKEY_LOCAL_MACHINE
  * Config 
  * Enum 
  * Hardware 
  * Network 
  * Security 
  * SOFTWARE
  * System 

Wollen Sie Näheres wissen über Ihre Windows-Installation, so finden Sie unter
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion alle Registrierungsangaben:
REGEDIT4 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion]
"InstallType"=hex:02,00
"SetupFlags"=hex:02,01,00,00
"DevicePath"="C:\\WINDOWS\\INF"
"ProductType"="2"
"RegisteredOwner"="Dr. Wolfgang Näser"
"RegisteredOrganization"="XXXXX"
"ProductId"="27173-XXX-XXXXXXX-XXXXX"
"LicensingInfo"=""
"SubVersionNumber"=""
"InventoryPath"="C:\\WINDOWS\\SYSTEM\\PRODINV.DLL"
"ProgramFilesDir"="C:\\Programme"
"CommonFilesDir"="C:\\Programme\\Gemeinsame Dateien"
"MediaPath"="C:\\WINDOWS\\media"
"ConfigPath"="C:\\WINDOWS\\config"
"SystemRoot"="C:\\WINDOWS"
"OldWinDir"="C:\\WINDOWS"
"ProductName"="Microsoft Windows 95"
"FirstInstallDateTime"=hex:21,82,38,27
"Version"="Windows 95"
"VersionNumber"="4.00.950"
"BootCount"="3"
[...]

Werden neue Programm-Pakete installiert, so befrachtet das möglicherweise unverhältnismäßig die Registry. So war ich nicht wenig überrascht festzustellen, daß auf die Installation des Real Players /Encoders G2 in der aus SYSTEM.DAT und USER.DAT extrahierten ASCII-Datei w95.reg mehr als 150 kB an Registrierdaten zurückgingen; wird nicht korrekt deinstalliert, so verbleiben diese Daten auf ewig in der Registry; diese wird zur Rumpelkammer.

Nicht nur Programm-Informationen und Konfigurationsdaten wandern in die Registry; sie enthält auch viele protokollarische Einträge, z.B. welche URLs von Browsern "besucht", welche Dateien von Textprozessoren bearbeitet und welche zum Lesen aufgerufen wurden. Dagegen wäre dann nichts einzuwenden, wenn sich - wie im "Papierkorb" oder in Gestalt der Datei NETSCAPE.HST - diese Daten löschen ließen bzw. wenn von Zeit zu Zeit automatisch "ausgemistet" würde. Nichts dergleichen ist möglich, die Registry schwillt an, wird allmählich zum Moloch - mein Rekord steht bei 2,8 Megabytes für SYSTEM.DAT.

Zudem ist die Registry längst nicht so 'durchsichtig', wie es ihr Explorer-konformer Strukturbaum vorgaukelt; das zeigt ein konkreter Fall:
Wir de-installieren das umfangreiche Programmpaket IBM Voice Type Simply Speaking; es wird angezeigt, daß nicht alles deinstalliert wurde, aber das Programm wurde korrekt vom Desktop entfernt und ist auch nicht mehr in der Registry zu finden. Nun entfernen wir, um Platz zu sparen, die noch zu VType gehörigen Module aus \windows\system. Als wir nach einem Re-Start aus einem anderen Grunde die Systemsteuerung aufrufen, meldet sich die aus Win-95-Anfangszeiten bekannte 'Taschenlampe' und im Hintergrund ein Warnfenster:
Voice Type Properties Error: Unable to load national language resource module 

<Return> verschafft uns den Zugang zur Systemsteuerung. In der Registry entdecken wir weder Voice Type noch ein zugehöriges Modul. Mit dem Hex-Viewer sehen wir [in DOS] zu unserem Erstaunen, daß sowohl in SYSTEM.DAT wie in USER.DAT noch jede Menge Hinweise auf IBM Voice Type auftauchen - so, als wären die Registrierdaten nie getilgt worden. REGENIE.EXE aus Nortons Clean Sweep tilgt einige unerhebliche Erwähnungen, kann jedoch ebenso wenig den hartnäckigen Überbleibseln zu Leibe rücken. REGCLEAN, ein Microsoft-Dienstprogramm, 'reinigt' die Registry, doch auch hier nicht der gewünschte Erfolg. USER.DAT läßt sich anscheinend überhaupt nicht maintenieren.

Der 'Pferdefuß' besteht also darin, daß die Registry nur zum Teil zugänglich ist und daß es keinen Interpreter gibt bzw. eine Bediener-Oberfläche, anhand der man die Registrierdaten besser verwalten und parasitäre Einträge tatsächlich entfernen könnte. Microsoft hat zwar eine rund 1200 Seiten starke Technische Referenz zu Windows 95 publiziert, es jedoch auch hier unterlassen, alle Fakten auf den Tisch zu legen. Aus allen genannten Gründen ist es nötig, der Registry auf den Grund zu gehen und Strategien zur Systementrümpelung und Registry-Wartung zu suchen und zu entwickeln.

In diesem Zusammenhang sei auch darauf hingewiesen, daß es äußerst problematisch sein kann, ein einigermaßen funktionierendes Windows 95 (A) auf Win 98 SE upzugraden mit der Option, alle bestehenden Einstellungen aus der alten Registry zu übernehmen. In einem konkreten Fall arbeitete Win 95A mit einem Accton-PCI-Netzadapter, zunächst einwandfrei unter 32-Bit, bis dann aufgrund einer Systembereinigung (manuelles Entfernen unnötig scheinender *.dll usw., Neubestückung von \windows\system aus einer erfolgreich auf einem anderen Rechner arbeitenden Konfiguration) die Karte nur noch unter 16-Bit arbeitete und mit keinem Algorithmus 'umzustimmen' war. Danach der Versuch, dem durch ein Upgrade auf Win 98 SE abzuhelfen mit dem Resultat, daß die Adapterkarte sich komplett weigerte, ins Netz zu gehen. Danach Durchforstung der Registry; Tilgen aller Winsocket-Einträge; Aufspielen des Win-98-Beta-Systemkerns nach Booten von A:>; Wiedereinspielen des versuchsweise entfernten wsock32.dll in \system; Neuinstallation des Netscape-Communicators 4.73d (Module mit UPX packbar!) und dann meldete sich plötzlich die Netscape-Homepage als Signal, daß alles OK war. Achten Sie also vor jedem Upgrade auf die Registry: besonders dahingehend, ob sich hier aus früheren Installationen noch Hinweise auf Module befinden, die schon längst nicht mehr im System, jedoch noch immer dort "inventarisiert" und daher als abrufbar deklariert sind!
=> Zum (neuen) automatischen Aufräumen der Registry mit TuneUp 97 s. unten.

VERSCHLANKUNG DER REGISTRY

1. Zum Verfahren
Auf der Windows-95-CD befindet sich in \win95\win95_02.cab (1.220.600 Bytes) die DOS-Version von REGEDIT.EXE (Sie benötigen die Version von Windows 95 B!), mit der Sie aus \windows\ die Registry SYSTEM.DAT in eine ASCII-Datei *.reg exportieren können:
                [c:\dos\]regedit /e reg.txt

Dabei werden sowohl aus SYSTEM.DAT wie USER.DAT alle anfallenden Registrierdaten entnommen und in die ASCII-Datei reg.txt geschrieben; reg.txt ist Abbild der gesamten Registry und kann, falls 'klein' genug (bis ca. 650 kB), mit einem leistungsfähigen ASCII-Editor (z.B. TPE) als ganzes bearbeitet werden: vorausgesetzt, die Zeilen in *.reg werden nicht umbrochen und zwischen den KEY-Einträgen bleibt jeweils 1 Zeile frei. Eine größere *.reg muß mit einem  DOS-Splitter in mehrere Teile zerlegt werden, die nach der Bearbeitung durch copy /b <file1>+<File2>+<Filen> wieder zusammengefügt werden.

Sodann wird w95.reg in \windows\ re-importiert:
               [c:\dos\]regedit /c reg.txt

Dabei wird SYSTEM.DAT überschrieben und gleichzeitig verkleinert; auch bei USER.DAT läßt sich u.U. eine Größenabnahme beobachten. Beispiele:

  1. Pentium 166 MMX, 16 MB RAM, HD 2.1 GB, Win 95 A
    Stand  system.dat  user.dat  w95.reg  Reduktions-Faktor 
    system.dat  user.dat 
    orig. (1) 2.050.040  253.880  2.405.374 
    orig. (2)    501.268   77.980    676.395 
    re-imp. (1) 1.381.750  169.436     0.63    0,67 
    re-imp. (2)    468.572   77.976      0.93      -- 
  2. IBM Thinkpad 755 C, CPU 80486 / 50 MHz, 20 MB RAM, HD 350 MB
    Stand  system.dat  user.dat  w95.reg  Reduktions-Faktor 
    system.dat  user.dat 
    orig.    698.668   82.068   609.173 
    re-imp.    421.324  73.876       0,6    0,9 

2. Zur Interpretation
(1): Entgegen den (im Anschluß an meine Text-Erstfassung vom Oktober '99) in "Fachblättern" geäußerten Statements lassen sich mit dem DOS-Programm REGEDIT nicht immer die Inhalte von SYSTEM.DAT und USER.DAT  in dieser Weise ex- bzw. reimportieren. Haben Sie von Win 95 aus bestimmte Schlüssel "unfachmännisch" getilgt und ist der zum jeweiligen Programm gehörige, noch in der Registry vorhandene Rest unzugänglich (inaccessible) geworden, oder repräsentieren USER.DAT und SYSTEM.DAT verschiedene Installations-Zeitpunkte, so wird die Registry für derartige Operationen unzugänglich und müssen Sie auf einen früheren Zustand zurückgreifen. Verwenden Sie dennoch zeitlich unzusammenhängende Systemdateien, so kann sich Windowes 95 nach dem Start in einer Schleife aufhängen und immer wieder nach einem Neustart zur Reparatur der Registry verlangen. Selbst wenn Sie danach auf die zuletzt gesicherten, damals noch "operablen" Dateien zurückgreifen, kann es (wie im April 2000 beobachtet) beim System-Hänger bleiben und müssen Sie die am vorletzten Zeitpunkt gesicherten Registry-Daten einspielen (wehe, wenn nicht vorhanden!) - ein Beweis dafür, daß außer SYSTEM.DAT und USER.DAT wohl noch andere Dateien existieren, in denen der jeweils aktuelle Betriebszustand protokolliert bzw. dokumentiert wird.

(2) Sind die Registry-Dateien sehr groß, kann der Export ziemlich lang dauern und die Festplatte stark beanspruchen (sie rattert andauernd). Um beides zu vermeiden, sollten Sie vom DOS-Prompt aus smartdrv[.exe] aktivieren. Das gilt besonders für regedit/e und regedit/c unter Windows 98, das hier auf langsamen Rechnern (z.B. Pentium 120, 32 MB RAM, 8 GB E-IDE) an seine Grenzen stößt: die Registry-Dateien sind doppelt so groß wie bei Windows 95, der Export dauert ohne DOS-Cache 20 Minuten oder länger, die Festplatte rattert ständig. Mit (auf Default gesetztem) SMARTDRV geht der Export in ca. 5 Minuten vonstatten, der Re-Import (/c) dauert ca. 15 Minuten: überraschenderweise ohne Datei-Verschlankung (3.551.264 > 3.543.072 Bytes; 401.440 > 405.536 Bytes). Dasselbe gilt für einen PII/300 mit 8 GB E-IDE und 64 MB RAM (Programme: 3 GB, sonstige Daten 2,5 GB): die vergleichsweise größere Registry umfaßt system.dat = 5.500.960 Bytes, user.dat = 634.912 Bytes; es entsteht [ASCII-] reg.txt = 7.774.642 (!) Bytes. Wird nach DOS-Neustart SMARTDRIVE mit Default-Wert gestartet, ist die Platte nach einer Stunde noch am Rattern und reg.txt nicht geschrieben. Bei SMARTDRIVE = 16 MB (!) dauert der Prozeß ca. 15 Minuten, der Re-Import weitere ca. 10 Minuten, auch hier ohne Verschlankung (5.488.672 bzw. 639.008 Bytes; auch hier werden einige kB an user.dat "abgetreten").

SYSTEM-ENTRÜMPELUNG

(a) manuell

Fall 1: In einem seit Ende '97 benutzten Rechner (2 log. Laufwerke zu 1 GB) war windows\system auf über 100 MB angewachsen, system.dat hatte 2.205.040 Bytes und user.dat 253.880 Bytes. Die Seagate-Festplatte bewies mit lautenm Rattern, daß sie viel zu tun hatte; der Programm-Ablauf hatte sich sehr verlangsamt und auch das sehr umständliche Defragmentieren half nichts.

Die Analyse des Datei-Bestandes (per XTGold) zeigte über tausend *.url (zu je 60-70 Bytes), hunderte von Links (*.lnk), und auch viele *.gids, die im Laufe vieler Programm-Installationen und intensiver Arbeit entstanden waren. Viele dieser Dateien sind +s /+h und werden daher bei Defragmentierungen nicht verschoben. Gibt es viele *.gid und *.lnk, wird nie richtig defragmentiert und der Prozeß dauert deshalb so lange, weil ständig um diese "Inseln" herumnavigiert werden muß. Werden hernach umfangreiche Programme "gefahren" und muß dabei öfter aus- bzw. umgelagert (geswapt) werden, so stehen innerhalb größerer Leer-Zonen diese kleinen Dateien im Wege, verlangsamen und verkomplizieren diese Aktionen, weswegen die Festplatte Schwerstarbeit verrichten muß und schneller verschleißt.

In unserem Fall wurde(n):

Da beide Registry-Dateien offenbar keine Fehler enthielten, klappten auf DOS-Ebene sowohl Export wie Re-Import (Überschreiben); Ergebnisse der Gesamt-Aktion:

Fall 2 betrifft die Registry des mir seit Anfang Sept. 99 zur Verfügung stehenden IBM Thinkpad 755C; auf der nur 350 MB 'großen' Festplatte muß an Platz gespart werden, wo und wie immer es geht. Die originale system.dat (698.668 Bytes) wurde mit \dos\regedit exportiert zu w95.reg (von der Größe [609.173 Bytes] her noch mit dem leistungsstarken Turbo-Pascal-Editor TPE als ganzes editierbar!) und re-importiert zur neuen system.dat von (letztlich) nur 421.324 Bytes (RF: 0,603); user.dat reduzierte sich von 82.068 auf 73.876 Bytes (RF: 0.9). Ob hinsichtl. des Reduktionsfaktors irgendwelche Gesetzlichkeiten vorliegen, ist noch zu prüfen.

Microsoft empfiehlt - und dem schließe ich mich an -, regelmäßig SYSTEM.DAT und USER.DAT zu sichern: am besten vor jeder aufwendigen Neu-Installation. Hätte ich das z.B. vor meinen Versuchen mit Voice Type getan, so könnte ich jetzt beide Dateien einkopieren und mich entspannt zurücklehnen. - Sicherheitshalber sollten Sie auch alle *.ini, *.cfg, *.grp und *.lnk (korrekt mit Pfaden) in Ihr System-Backup einbeziehen. Zu große *.dat sollten Sie zippen, damit sie noch auf die Diskette passen - oder besser auf CD-R sichern.

(b) automatisch

Das neue Dienstprogramm TuneUp 97 (V.1.1a) ist in der Lage, das gesamte System eines komplex konfigurierten stationären oder mobilen PCs nach bestimmten Optionen selbsttätig aufzuräumen, wobei auch und gerade die Registraturdatenbank einer gründlichen Revision unterzogen wird. So konnten im Mai 2001 drei Rechner mit TuneUp 97 in jeweils nur einem Durchgang performativ verbessert werden:

Wird ergänzt; Stand: 15.5.2001