レジストリの破損が原因で、
Windowsがまともに動かない、もしくは起動できない状態からでも、
レジストリを復旧する
方法を紹介します。

まず最初にお断りしておきますが、ここで紹介しているのは正規の方法ではありません
勝手な方法ですが、そのほうが楽ですし、成功率も高いので。

はじめに

Microsoftで紹介されている方法は、回復コンソールを使ったものですが、
そもそも「Windows XP」のインストールディスクなんて手元にない場合が多く、
新たに起動ディスクを作ろうとしても、フロッピーディスクが6枚も必要になるという罠。
そのあげく、やっとの思いで起動した回復コンソールは、
DOSコマンドをある程度知っていないと使えないというシロモノ。※参考: Microsoftサポート
そのうえ、Microsoft推奨の方法でやってみても、うまく動作しないことが多いのです(なんだそれ)

後で知ったことですが、OEMによってプリインストールされているWindows XPでは、
安直に一般的な方法でレジストリを復旧しようとすると、
それ以前に存在していなかったパスワードとユーザーアカウントが作成されてしまうそうです。
※参考: Microsoftサポート
実際に、パスワードが一致しないとか、そんなエラーが出たこともありました。
あと、「ようこそ」画面の後で再起動をひたすら繰り返すようになったり。

つまり、Windowsがプリインストールされているパソコンでは、
「repair」フォルダを用いてレジストリを復旧してはいけない
ということです。
ほぼ確実に、起動できなくなります。

というわけで、勝手な方法でレジストリを復旧してみます。
本質的な考え方は同じですが、使用するソフトは「KNOPPIX」です。
「KNOPPIX」を使って、システムの復元で使っているバックアップファイルを置き換えることで、
レジストリを復旧します

「KNOPPIX」を簡単に説明すると、1枚のCDで起動できるLinuxです。
現在ではNTFSパーティションの読み書きもできるようになったので、これを使います。
入手、起動方法についての説明は、下記ページにて。

「KNOPPIX」の使い方

ここでは、「KNOPPIX」が起動している状態を前提に話を進めていきます。

レジストリファイルの確認

まず、「Cドライブ」に該当するパーティションを、書き込み可能な状態でマウントしてください。
マウントについて不明な方は、下記参照してください。

「KNOPPIX」でのマウント

続けて、「Konqueror」で「/WINDOWS/system32/config」フォルダを参照します。
この中にあるのが、Windowsのレジストリファイル群です。
ここではファイル名をわかりやすくするために、「Konqueror」をツリー表示にしてあります。

Windowsが現在使用しているレジストリファイルは、

「default」 「sam」 「security」 「software」 「system」

計5つです。
すべて、拡張子のないものです。

それぞれ関連しているので、5個で1セットと考えてください。
エラー表示があったからといって、特定のものだけ置き換えたりすると、
レジストリの整合性がとれなくなって、正常起動できなくなります。
レジストリが破損しているなどの問題がある場合は、
これらのファイルをまとめて正常なファイルに置き換えてやる必要があるわけです。

レジストリファイルの復元

まず最初に、これら現在使用しているレジストリファイルの名前を変更します。
ここでは、拡張子「.bak」を付けて保存しておくことにします。

これは、何かあったときに、最低限元の状態に戻せるようにするための処置です。
豪快な人は、レジストリファイル自体を削除してしまってもかまいませんが、
基本的に無茶はやめたほうがいいでしょう。

続けて、「/System Volume Information/_restore{~}/RP~/snapshot」フォルダを参照します。
※~は任意の文字列。
これは、「Windows XP」の「システムの復元」機能で、
レジストリファイルがバックアップされているフォルダです。

「_restore{~}」、「RP~」フォルダは複数あるかもしれませんが、
フォルダやファイルの作成日時を見て判断してください。
フォルダやファイルの作成日時が、そのまま復元ポイントの作成日時です。
もちろん、正常に動いていた日付のレジストリファイルを選ぶ必要があります。

で、必要なレジストリバックアップファイルは、

「_REGISTRY_MACHINE_SAM」 「_REGISTRY_MACHINE_SECURITY」
「_REGISTRY_MACHINE_SOFTWARE」 「_REGISTRY_MACHINE_SYSTEM」
「_REGISTRY_USER_.DEFAULT」

の、こちらも計5つです。
ファイル名の最後に、元の名前があるのでわかりやすいですね。
しかも「snapshot」フォルダで名前順に整列すると、上の方にまとまります。

復元すべきレジストリファイルが決まったら、
これらを「/WINDOWS/system32/config」フォルダにコピーします。

操作手順としては、例えば、

  1. 5つのレジストリバックアップファイルを選択
  2. 右クリック
  3. 「コピー先」 > 「ブラウズ」を選択
  4. 「記憶メディア」を選択
  5. 「/WINDOWS/system32/config」フォルダを指定
  6. 「OK」を選択

としてください。

ここで、レジストリファイルコピー時の注意点がいくつかあるので、挙げておきます。

クリップボードを使用しない

「KNOPPIX」の特性上、クリップボードのデータは失いやすいことを認識しておいてください。
つまり、一般的な「コピー」 → 「貼り付け」の手順だと、失敗することがあります

コピー先フォルダを間違えない

コピー先フォルダの指定を、「/WINDOWS/config」フォルダと間違えないでください
「/WINDOWS/system32/config」フォルダです。

書き込み可能な状態でマウントする

どうしてもファイルのコピーがうまくいかない場合は、
このパーティションが読み取り専用の状態でマウントされていないか、確認してみてください

特に、「KNOPPIX」のようなLive CDを初めて使う場合は戸惑いもあるかもしれませんが、
慣れてしまえばこれほど便利なものも、なかなかありません。

無事ファイルのコピーが完了したら、
これら5つのレジストリバックアップファイルを、正規のレジストリファイル名に変更します。

ファイル名のアルファベットの最後の部分だけ残して、
それより前の文字列を削除するだけ
でいいです。
例えば、「_REGISTRY_MACHINE_SAM」 → 「SAM」とかです。
※「_REGISTRY_USER_.DEFAULT」については、「.」もいらないので注意してください。
厳密には、小文字だったファイル名が大文字になったりするんですが、
関係なく動作するので気にしないことにします。

5つのレジストリファイルの名前変更が完了したら、パソコンを再起動します。

うまくいけば、セーフモードですら起動できなかったパソコンでも、
コピーしたファイルの日付のレジストリを用いて、Windowsを起動することができます。