(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:
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 | -- |
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