c000021a Unknown Hard Error の一事例
昨日は正常に動いていたのに今日電源入れたら再起動を繰り返してしまうと言うことでご来店。
OSはWindowsXP Home
早速起動時F8押下でエラー時の再起動を抑制して起動します。
c000021a
Unknown Hard Error
でました、厄介なエラー。
特定の原因ではなく、細かい変なことで出るエラーとして有名です。
一部では死のエラーとか
(対処法が個々の事例によって異なるので原因特定が難しいのと、必ずその原因で出るわけではないので)
まずはDisk障害を疑ってみます。
SMARTの値は正常
chkdskも問題なし
となると次、レジストリーの不整合を疑います。
c:\System Volume Information配下に自動保存されてるバックアップレジストリーファイルを
c:\windows\system32\config配下にそれぞれコピーして起動してみます。
同じようにc000021aでBSoD・・・
ここまでくると、エラーの原因として考えられるのは
Windowsのシステムファイルが不整合を起こしてるくらいしか検討がつきません。
そしてWindowsのシステムファイルが崩れる主な原因の最上位に位置するのが
WindowsUpdateの失敗 です。
本日が2012/05/10ですので、直近でUpdateが成されてないか調べてみます。
C:\Windowsフォルダ直下に隠し属性で置かれている$から始まるフォルダ群(通常は圧縮処理されてるので青くなってます)はWindowsUpdateが走った際に、置き換えられるファイルがバックアップとして保存されており、そのときの時間でフォルダが作成されています。
時系列順に並べてみると・・・
昨日WindowsUpdateが走ってるのが確認できます。
KB2676562
これが最終更新でした。
中を見ると
ntoskrnl.exe
ntkrnlpa.exe
ntkrnlmp.exe
ntkrpamp.exe
win32k.exe
等々、カーネル部分がごっそり入ってます。
spuninstフォルダに、spuninst.txtというファイルがあります。
このファイルは、緊急時に適用したUpdateをバッチファイルで元に戻す書式が記載されています。
KB2676562のspuninst.txtはこれ
——————–
DEL “c:\windows\$hf_mig$\kb2676562\sp3qfe\ntkrnlmp.exe”
DEL “c:\windows\$hf_mig$\kb2676562\sp3qfe\ntkrnlpa.exe”
DEL “c:\windows\$hf_mig$\kb2676562\sp3qfe\ntkrpamp.exe”
DEL “c:\windows\$hf_mig$\kb2676562\sp3qfe\ntoskrnl.exe”
DEL “c:\windows\$hf_mig$\kb2676562\sp3qfe\win32k.sys”
DEL “c:\windows\$hf_mig$\kb2676562\update\mpsyschk.dll”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntkrnlmp.exe” “c:\windows\driver cache\i386\ntkrnlmp.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntkrnlpa.exe.000” “c:\windows\driver cache\i386\ntkrnlpa.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntkrpamp.exe” “c:\windows\driver cache\i386\ntkrpamp.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntoskrnl.exe.000” “c:\windows\driver cache\i386\ntoskrnl.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntkrnlpa.exe” “c:\windows\system32\ntkrnlpa.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntoskrnl.exe” “c:\windows\system32\ntoskrnl.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\win32k.sys” “c:\windows\system32\win32k.sys”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntkrnlmp.exe.000” “c:\windows\system32\dllcache\ntkrnlmp.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntkrnlpa.exe.000” “c:\windows\system32\dllcache\ntkrnlpa.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntkrpamp.exe” “c:\windows\system32\dllcache\ntkrpamp.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\ntoskrnl.exe.000” “c:\windows\system32\dllcache\ntoskrnl.exe”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\win32k.sys” “c:\windows\system32\dllcache\win32k.sys”
COPY “C:\WINDOWS\$NtUninstallKB2676562$\spuninst\spuninst.txt” “C:\WINDOWS\$NtUninstallKB2676562$\spuninst\spuninst.tag”
——————–
検証機に修理PCのHDDを接続し、ドライブレターの記述を変更した上で上記のコマンドを発効していき、ntoskrnl.exeやwin32k.sysを自動バックアップされてあった旧ファイルに置き換えていきます。
置き換えが終わったらHDDを元のPCに接続し、起動。
無事Windowsが起動しデスクトップが現れました。
あとは改めてWindowsUpdateを適用し、正常に起動できることを確認します。