WinXPで起動後ログイン画面に遷移しない原因

今日、会社の関係者から、再起動したらPCにログインできなくなったという問い合わせがあった。

現象

覗いてみると、確かにログイン画面に進んでいない。
もう少し細かい流れとしては、
  電源ON
   ↓
  Windowsのロゴが出る(背景が黒)
   ↓
  背景がブルーに変わる
   ↓
   ↓ここからおかしい
   ↓
  ログインのダイアログが出てくるはずが出てこない。
  マウスポインタは出てきて動かすことができるがそれだけ。
  右クリックしようがCtr+Alt+Delを押そうが何をしても無反応
   ↓
  電源長押で強制終了するしかない

考えられる対策1

まあよくあるHDD(ハードディスクドライブ)障害か何かだろうとまずは判断し、まずはセーフモードで起動した。

しかし、セーフモードでも同じ現象が起きる。
これまで見てきた障害にはないものだ。。

そもそもHDD障害や他の障害なら、同じような止り方はせず、たとえば
 ・ログイン画面は出てきて、ログイン後ある程度したら止まる
 ・最初のWindowsのロゴすら出なくなる
といったことが起きてくるはず。。

あとは自分はよくやるのだが、マシン本体に耳をあて、HDDから異音を出していないかチェックした。
大半は、HDDの障害だと「ギーギー」や「ウィーン、カチ、カチ」といった普段は聞かないであろう音を発している。
今回も電源ONのあと耳をあててみたが、いたって普通のHDDの動く音(「ガガガ、ガガガガガガガー」みたいな)だった。

考えられる対策2

HDD障害のようなハードウェアの故障ではないかもしれないと予測したので、それならば論理的なものがおかしくなったのかもしれないと思い、チェックディスクを行うこととした。

WindowsのインストールCDで回復コンソールを起動し、以下のコマンドを入力(時間がかかるので注意!)。

CHKDSK C: /P
CHKDSK C: /R

このコマンドを実行すると、不良セクタ等が見つかれば修復してくれる。
また、修復に失敗した場合はやはりHDD自体に問題があることも推測できる。


実行した結果、1つの不良セクタを見つけ、修正を完了したと出た。

これで直ると思い、

EXIT

で回復コンソールから抜け、PCは再びWindowsのロゴが出現した。



チェックディスクの結果

しかし、結果は同じ。全く同じだった。
マウスポインタだけ出現するブルーな画面。
ブルースクリーンとは違い、デフォルトの背景色なのでやや薄い青であることを補足)

この時点でかなりお手上げ状態。
再インストールも頭によぎった。

唯一の救いは、回復コンソールでディレクトリを移動したりファイル一覧を見たりCOPYしたりすることはできたので、ディスク自体は死んでいないとある程度判断できた。

なので、PCからHDDを取り出し、他の正常なPCにデータを吸い出す方法を視野に入れていた。



1つの突破口

それから少し時間が経ち、問題の出たPCの使用者が他のPCでググってくれていた。
なんでも、他でも全く同じような現象が起きているとのこと。
しかもごく最近に。

自分でも別途確認してみたが、たしかにここ1〜2日に集中して質問があがっている。
おそらく、自分たちと同じお手上げ状態になったのだろう。

最近旬なTwitterでも調べてみたが、やはり最近の投稿に同じようなことがいくつか。

これはあきらかにおかしい。


そして数ある質問とそれに対するコメントや回答の中に、「WindowsUpdate」が原因ではないかというものがあった。
正確には今月14日(2009/10/14)にMicrosoftから出た大量のセキュリティパッチ。

以下のURLにその詳細が。
http://www.microsoft.com/japan/protect/computer/updates/bulletins/200910.mspx

このセキュリティ更新は非常に大きなものだったのを覚えている。
なかなかダウンロードが終わらないぐらいのサイズの大きさ。

しかも、「緊急」なのがほとんど。
MSも急いで出したのだろうか。


対応

結局、問題の出たPC使用者の方に、回復コンソールから今回分のセキュリティパッチを削除してもらうようにした。

本家のMSに「レジストリの破損により Windows XP を起動できなくなった場合の回復方法」として載っている。
http://support.microsoft.com/kb/307545/JA/

ただ、少し見辛いため、WindowsWorldにて過去載っていたものを引用。

(1)WindowsXPが正常起動しなくなったコンピュータを、WindowsXPのインストールCDを使用して起動します。または、WindowsXPのインストール用起動ディスクの1枚目をフロッピーディスクドライブにセットして起動します。

(2)WindowsXPのセットアッププログラムが開始されるので、「セットアップの開始」画面が表示されたら「R」を押して、回復コンソールを起動します(画面3)。

(3)キーボードの種類を指定後、「どのWindowsにインストールしますか?」と表示されたら、通常は「1」と入力し、Administratorのパスワードを入力します。WindowsXP Home EditionでAdministratorのパスワードを設定したことがない場合は、パスワードは空の状態なのでそのまま「Enter」キーを押してください。複数のWindowsがインストールされているマルチブートシステムの場合は、問題のあるWindowsの番号を指定してログオンしてください。

(4)回復コンソールにログオンすると、初期フォルダがシステムドライブ内のWindowsのルートフォルダ(デフォルトのインストールの場合は「C:\Windows」)になるので、次の「CD」コマンドを使って「System32\Config」フォルダに移動します。レジストリは、このフォルダにある「SYSTEM」「SOFTWARE」「SAM」「SECURITY」「DEFAULT」の5つのファイルで構成されます。

 cd System32\Config

(5)次の10行のコマンドラインを実行して、既存の問題のあるレジストリファイルのバックアップコピーを作成してから、レジストリファイルを削除します(画面4)。ファイルがすでに存在しない場合は「ファイルが見つかりませんでした」と表示されますが、ここでは無視してかまいません。

 copy SYSTEM SYSTEM.BAK
 copy SOFTWARE SOFTWARE.BAK
 copy SAM SAM.BAK
 copy SECURITY SECURITY.BAK
 copy DEFAULT DEFAULT.BAK
 del SYSTEM
 del SOFTWARE
 del SAM
 del SECURITY
 del DEFAULT

(6)次に、システムドライブの「System Volume Information」フォルダに移動します。この「System Volume Information」フォルダには、WindowsXPの「システムの復元」のチェックポイントで保存された、システム状態のスナップショットが格納されています。なお、フォルダ名に半角スペースが含まれるので、必ずフォルダ名を二重引用符(")で囲んでください。

 cd "System Volume Information"

(7)「DIR」コマンドでフォルダ内のファイルとフォルダを確認します。このフォルダ内にある「_restore{xxxxxxxx-xxxx- xxxxxxxx-xxxxxxxxxxxx}」(xxxは半角大文字英数字)という名前のフォルダを探して、「CD」コマンドでそのフォルダに移動します。「_restore{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}」が複数存在する場合は、タイムスタンプ(日時)が新しい方を選択してください(画面5)。

 cd _restore{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

(8)「_restore{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}」フォルダに移動したら、ここでも「DIR」コマンドを実行してフォルダ内を参照します。ここで「RPx」(xは1以上の整数)という名前で、タイムスタンプが最も新しいフォルダを探します。

(9)手順?で特定したフォルダ内の「Snapshot」フォルダに移動します。例えば、「RP1」フォルダの場合は、次のコマンドラインで移動します。

 cd RP1\Snapshot

(10)「RPx\Snapshot」フォルダに移動したら、「DIR」コマンドでフォルダ内を参照してみてください。次の5つのファイルが確認できるはずです。これらのファイルが、それぞれレジストリファイル「SYSTEM」「SOFTWARE」「SAM」「SECURITY」「DEFAULT」の最新のコピーになっています。

 _REGISTRY_MACHINE_SYSTEM
 _REGISTRY_MACHINE_SOFTWARE
 _REGISTRY_MACHINE_SAM
 _REGISTRY_MACHINE_SECURITY
 _REGISTRY_USER_.DEFAULT

(11)次の5つのコマンドラインを実行して、レジストリファイルのバックアップを元の位置に戻します(画面6)。

 copy _REGISTRY_MACHINE_SYSTEM C:\Windows\System32\Config\SYSTEM
 copy _REGISTRY_MACHINE_SOFTWARE C:\Windows\System32\Config\SOFTWARE
 copy _REGISTRY_MACHINE_SAM C:\Windows\System32\Config\SAM
 copy _REGISTRY_MACHINE_SECURITY C:\Windows\System32\Config\SECURITY
 copy _REGISTRY_USER_.DEFAULT C:\Windows\System32\Config\DEFAULT

(12)回復コンソールのコマンドプロンプトで「exit」と入力し、コンピュータを再起動します。正常に起動できることを確認してください。

WindowsXPでは、「システムの復元」機能がデフォルトで有効になっていますが、環境によっては無効になっている場合もあるでしょう。その場合は、上記の方法で探した最新のレジストリのバックアップコピー(_REGISTRY_*)と、「C:\Windows\Repair\」フォルダの下にある「SYSTEM」「SOFTWARE」「SAM」「SECURITY」「DEFAULT」の新しい方を、「C:\Windows\System32 \Config」フォルダにコピーしてください。

Windows Worldより

対応結果

上位対応を実施していただいた後、再起動するとちゃんと正常に立ち上がったという連絡をもらった。
かなりほっとした。

ただ、今回の現象は自分のPCや一部の人たちだけでなく、日本中、はたまた世界中のWinXPの一部の人たちに影響するのではないかと思う。
あと1〜3日ぐらいしたら御祭騒ぎになるのだろうか。。。



番外編(もし削除に失敗した場合)

今回の作業はレジストリファイルを削除しますので、誤って今回のものと関係ないものを削除すると、たとえ無事セキュリティパッチを無事に削除できてもWindowsそのものが壊れる可能性があります。

そのときは方法は2つしかないと思います。

 ・諦めて再インストール

 ・他のHDDにデータを吸出して再インストール


データ自体は今回の問題では無事ですので、たとえレジストリファイルを削除してしまってもデータは取り出せます。