Dateien austauschen die in Benutzung sind
Dateien die unter Windows gerade im Speicher geladen sind, werden gegen jede VerΣnderung geschⁿtzt (L÷schen, Umbenennen usw.). Damit aber Service Packs usw. die M÷glichkeit haben auch Systemdateien austauschen zu k÷nnen gibt es natⁿrlich auch dafⁿr einen vorgeschriebenen Weg.
Unter Windows 95/98:
Windows sucht nach einem Start im Windows-Verzeichnis nach einer Datei mit den Namen "WININIT.INI". Wird diese Datei gefunden wird diesen noch im DOS-Modus durch das Programm WININIT.EXE abgearbeitet (hier ist es noch erlaubt Systemdateien auszutauschen).
Dieses Programm erwartet in der INI-Datei unter dem Abschnitt [RENAME] die jeweiligen Anweisungen.
Durch die Anweisung:
[RENAME]
c:\windows\system\test.dll=c:\test\ersatz.dll
wⁿrde Windows die Datei TEST.DLL mit der Datei ERSATZ.DLL ⁿberschreiben. Danach wird die Datei ERSATZ.DLL aus dem Verzeichnis gel÷scht. Nach dieser Aktualisierung sichert Windows die INI-Datei unter den Namen WININIT.BAK ab und entfernt alle durchgefⁿhrten Anweisungen aus der WININIT.INI.
Windows NT
Hier wird statt auf eine Datei auf einen Zweig in der Registry zurⁿckgegriffen, der unter dem Registry Schlⁿssel
HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Control\ Session Manager\ PendingfileRenameOperations abgelegt wird. Das wird hauptsΣchlich wegen der Sicherheit gemacht, auf diesen Schlⁿssel hat nur ein Administrator Zugriff. Darum ist es auch nur m÷glich das ein Administrator ein Service Pack installieren kann, hier werden nΣmlich einige Systemdateien ausgetauscht.
Sie sollten sich diesen Schlⁿssel immer nur mit REGEDT32 ansehen, da dieser Wert als Datentyp REG_MULTI_SZ angelegt ist, mit REGEDIT wⁿrde man hier also nur HEX Zahlen sehen, was einem wohl wenig weiterhelfen wⁿrde.
Microsoft sagt, das man diesen Wert nicht direkt ⁿber den Registry Editor verΣndern sollte, sondern immer nur ⁿber die Systemfunktion "MoveFileEx" da hier vorher eine ▄berprⁿfung durchgefⁿhrt wird. Fⁿr das obige Beispiel wⁿrde das dann so aussehen:
MoveFileEx('c:\test\ersatz.dll','c:\windows\system\test.dll',MOVEFILE_DELAY_UNTIL_REBOOT);
Alte Dateien im Zielverzeichnis werden nur durch neuere aus dem Hilfsverzeichnis ersetzt, wenn der letzte Parameter auf (MOVEFILE_REPLACE_EXISTING | MOVEFILE_DELAY_UNTIL_REBOOT) gesetzt wird.
Nur
Administratoren haben die Berechtigung auf diesen Registryschlⁿssel schreibend zu zugreifen.
Hier
werden nur kurze Dateinamen verarbeitet (8.3).
Mit
den Programm "MoveEx" von http://wwwthep.physik.uni-mainz.de/~frink/nt.html
bekommt mann auch die hΣrteren FΣlle in den Griff, da die Dateien damit beim Booten verschoben werden,
bevor andere Prozesse gestartet werden.
![]() ![]() ![]() |
Copyright ⌐ 1996/2000 by Frank Ullrich