Dateien austauschen, die in Benutzung sind
Gültig für: Alle Windows Versionen
Dateien, die unter Windows gerade im Speicher geladen sind, werden gegen jede Veränderung geschützt (Löschen, Umbenennen usw.). Damit aber auch Service Packs usw. diese Systemdateien austauschen können, gibt es natürlich auch dafür einen vorgeschriebenen Weg.
Unter Windows 95/98/ME:
Windows sucht während des Startvorgangs, aber noch bevor die graphische Oberfläche geladen wird, im Windows-Verzeichnis nach einer Datei mit dem Namen "WININIT.INI". Ist die Datei vorhanden, wird diese noch im DOS -Modus durch das Programm WININIT.EXE abgearbeitet (zu diesem Zeitpunkt ist es noch erlaubt bzw. möglich, 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
wird die Datei TEST.DLL mit der Datei ERSATZ.DLL überschrieben. Danach wird die Datei ERSATZ.DLL aus dem Verzeichnis gelöscht. Nach dieser Aktualisierung sichert Windows die INI-Datei unter dem Namen WININIT.BAK ab und entfernt alle durchgeführten Anweisungen aus der WININIT.INI.
Eine Anweisung der Art "NUL=c:\ordner\wegdamit.dll" löscht die angegebene Datei.
Ab 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. Dies erfolgt hauptsächlich aus Gründen der Sicherheit, da auf diesen Schlüssel nur ein Administrator Zugriff hat. Darum ist es auch nur möglich, dass 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 weiterhilft.
Microsoft empfiehlt, diesen Wert nicht direkt über den Registry Editor zu verändern, sondern ü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 dann durch neuere ersetzt, wenn der letzte Parameter des MoveFileEx-Aufrufs auf (MOVEFILE_REPLACE_EXISTING | MOVEFILE_DELAY_UNTIL_REBOOT) gesetzt wird.
MS liefert dafür auch das Programm INUSE.EXE (aus dem Resource Kit), Informationen dazu finden Sie unter:
MS Knowledge Base: http://support.microsoft.com/?kbid=228930
Das Programm finden Sie unter:
http://download.microsoft.com/download/winntsrv40/Utility/1.3/NT4/EN-US/inuse.exe
Nur Administratoren haben die Berechtigung, auf diesen Registry-Schlüssel schreibend zuzugreifen.
Es werden nur kurze Dateinamen verarbeitet (8.3).
Mit dem Programm "MoveEx" von http://wwwthep.physik.uni-mainz.de/~frink/nt.htmlbekommt man auch die härteren Fälle in den Griff, da die Dateien beim Booten verschoben werden, bevor andere Prozesse starten.
WinFAQ: Startseite | WinFAQ: HTMLMenü | WinFAQ: Java Version
Der Tipp enthält einen Fehler oder Sie haben noch eine Ergänzung dafür? Schreiben Sie uns über die Feedback-Seite an: Feedback-Formular
URL: http://www.winfaq.de/faq_html/Content/tip0500/onlinefaq.php?h=tip0646.htm
WinFAQ ® Version 9.01 Copyright © 1996/2016 by Frank Ullrich