先週の金曜日夜、帰宅すると2007年からずっと使い続けてきたメインの開発PCが壊れて起動しなくなっていました。電源を換えてみましたが起動せず、結局 Core i5 でマザーボード毎交換して新しく作り換えることにしました。

で、今日(日曜)の夜、交換が終わって Windows 7 が起動するようになったのですが、その間でも、以前経験したアレがまた発生したので、備忘録のために書いておきます。

以前、Windows Home Server でバックアップした Vista を、VMware に復旧したとき「ブルースクリーンが出て起動しない」という現象が見られました。理由は、「Windows Vista 以降、OS起動時には必要最低限のドライバしかロードされないため、マザーボード等が変わるとWindows が起動できない」ということのようです。

今回 Windows 7 のPCの HDD&SSD(とケース)以外を全て交換したので、そのときと同じ現象で、ブルースクリーンで起動しなかったのでした。

今回は、Windows 7 の復旧メニューは表示されたので、インストールディスクを入れる必要はありませんでした。そこから、コマンドプロンプトを起動して

regedit

を実行し、表示されるレジストリエディタで HKEY_LOCAL_MACHINE を選択して、ファイルメニューから「ハイブの読み込み」を選択。ファイルを選択するダイアログが表示されたら、本来の「C:\Windows\System32\config\SYSTEM」に該当する部分を探します。本来の、というのは、この復元メニューでのコマンドプロンプトでは、起動ドライブが X:\ で、元々のドライブは(以前起動していたときに指定したドライブレターではなく)、システムに見つかった順に C からふられた別の番号なので・・・私の Cドライブは Eドライブとして認識されていました・・・各ドライブを見て、本来のCドライブを探します。

そのドライブ内の「C:\Windows\System32\config\SYSTEM」を選択して開くと、ツリーに表示するための名前を聞かれるので何か名前をつけます。

そうすると、レジストリツリーに、自分でつけた名前の項目が増えていて、そのなかに、これから復元しようとするコンピュータの HKEY_LOCAL_MACHINE の内容が表示されているはずです。

ただし「CurrentControlSet」はカレントじゃないので(起動しているわけではないので)、ControlSet001とかいくつか表示されているかもしれません。たぶん ControlSet001 なのでそれを選んで書き換えます。

マイクロソフトの技術文書によると

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msahci

を Start=0 に変更すると良いそうです。Vista時代の技術文書では4になっているとドライバがロードされない、ということのようです。今回、自分の Windows 7 は 3 になっていましたが・・・

とりあえず、ここまでやって「再起動」すると、ちゃんと Windows 7 が起動しました。デバイスドライバが無いので画面が狭く戻ってたり、キーボードとマウスがきかなかったので、ログイン画面で一度 USB を抜いて、もう一度差し直してみたりしましたが、その後無事にログインできて、ちゃんと使用できるようになりました。

・・・

その後、不要なデバイスドライバを消して、新しいデバイスドライバを入れて、Windows と Office のライセンス認証をもう一度やって(場合によってはマイクロソフトに電話をかけて)、マイクロソフト以外は24時間対応をしてくれないので、他のライセンスが無効になって起動しないソフトはサポートにメールを書いたり、Adobe Creative CS3 の場合は平日日中の電話しか対応してくれないので、ライセンス入力画面を表示ししたままスリープにして会社の昼休みにでも電話できるように番号を控えておけるよう(WindowsUpdateが急に走って再起動されると画面の番号が変わってもう一度電話しなければならなくなるので、設定を見直したり)・・・と、色々準備をすれば、ほら、後はほとんど何もしないでそのまま Windows を使用できます。

むぅ。フリーソフトとマイクロソフト以外は面倒だな。お金払ってるってのに。でも、無事復旧して良かったです。以上、参考になれば・・・