Udskiftning af kernefiler
Dette er et total-nørdet spørgsmål. Jeg kan godt forstå, hvis du - kære læser - ikke orker at læse det :-)Anyway, here goes:
I en frisk Windows 2000-installation ligger flg. fire kernefiler...
ntkrnlmp.exe
ntkrnlpa.exe
ntkrpamp.exe
ntoskrnl.exe
i hhv.:
%SystemRoot%\Driver Cache\i386
%SystemRoot\System32\dllcache:
To af disse kernefiler er til stede i %SystemRoot%\System32:
ntkrnlpa.exe
ntoskrnl.exe
Ingen af filerne er system, skjulte eller skrivebeskyttede, og i registreringsdatabasen har jeg tilføjet værdien:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
0xffffff9d (4294967197)
... som efter sigende skulle slå Windows' automatiske genskabelse af systemfiler fra.
Jeg har for sjov prøvet at ombytte disse kernefiler med fire lettere modificerede kopier fra CMD med et lille trick. De modificerede kernefiler hedder nt*.ex_:
----------
@echo off
copy /y ntkrnlmp.ex_ "%SystemRoot%\Driver Cache\i386"
copy /y ntkrnlpa.ex_ "%SystemRoot%\Driver Cache\i386"
copy /y ntkrpamp.ex_ "%SystemRoot%\Driver Cache\i386"
copy /y ntoskrnl.ex_ "%SystemRoot%\Driver Cache\i386"
copy /y ntkrnlmp.ex_ %SystemRoot%\System32\dllcache
copy /y ntkrnlpa.ex_ %SystemRoot%\System32\dllcache
copy /y ntkrpamp.ex_ %SystemRoot%\System32\dllcache
copy /y ntoskrnl.ex_ %SystemRoot%\System32\dllcache
copy /y ntkrnlpa.ex_ %SystemRoot%\System32
copy /y ntoskrnl.ex_ %SystemRoot%\System32
rem original
ren "%SystemRoot%\Driver Cache\i386\ntkrnlmp.exe" ntkrnlmp.exe_old
ren "%SystemRoot%\Driver Cache\i386\ntkrnlpa.exe" ntkrnlpa.exe_old
ren "%SystemRoot%\Driver Cache\i386\ntkrpamp.exe" ntkrpamp.exe_old
ren "%SystemRoot%\Driver Cache\i386\ntoskrnl.exe" ntoskrnl.exe_old
ren System32\dllcache\ntkrnlmp.exe ntkrnlmp.exe_old
ren System32\dllcache\ntkrnlpa.exe ntkrnlpa.exe_old
ren System32\dllcache\ntkrpamp.exe ntkrpamp.exe_old
ren System32\dllcache\ntoskrnl.exe ntoskrnl.exe_old
ren System32\ntkrnlpa.exe ntkrnlpa.exe_old
ren System32\ntoskrnl.exe ntoskrnl.exe_old
rem newcopy
ren "%SystemRoot%\Driver Cache\i386\ntkrnlmp.ex_" ntkrnlmp.exe
ren "%SystemRoot%\Driver Cache\i386\ntkrnlpa.ex_" ntkrnlpa.exe
ren "%SystemRoot%\Driver Cache\i386\ntkrpamp.ex_" ntkrpamp.exe
ren "%SystemRoot%\Driver Cache\i386\ntoskrnl.ex_" ntoskrnl.exe
ren System32\dllcache\ntkrnlmp.ex_ ntkrnlmp.exe
ren System32\dllcache\ntkrnlpa.ex_ ntkrnlpa.exe
ren System32\dllcache\ntkrpamp.ex_ ntkrpamp.exe
ren System32\dllcache\ntoskrnl.ex_ ntoskrnl.exe
ren System32\ntkrnlpa.ex_ ntkrnlpa.exe
ren System32\ntoskrnl.ex_ ntoskrnl.exe
----------
DET VIRKEDE IKKE - desværre :-(
Der kommer ingen fejlmeddelelser undervejs i batchfilen, men efter genstart vil Windows ikke indlæses - opstarten går i stå efter den hurtige hvide bjælke i bunden af skærmen ("Windows 2000 starter"). Windows vil åbenbart ikke kendes ved de nye kernefiler.
Herefter bootede jeg computeren på en USB stick med MS-DOS og Winternals "NTFS for DOS" inkluderet + de modificerede kernefiler. Dermed fik jeg read/write-adgang til NTFS-partitionen og kunne manuelt udføre operationerne skitseret i ovenstående batchfil.
DET VIRKEDE HELLER IKKE - øv :-(
Samme fejl som før.
--
Nu kommer spørgsmålet:
Hvordan kan Microsoft lave en KB-opdatering, som uden videre opdaterer kernefilerne - endda uden at brugeren skal genstarte computeren? Hvad er det, som sådan en opdatering gør mere end at bytte kernefilerne ud. Er det en registreringsbase-setting - eller er det noget helt andet.
Jeg er bare nysgerrig...
På forhånd tak!
