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

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

はじめに

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

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

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

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

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

「KNOPPIX」の使い方

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

Vista以降の仕様変更について

このページは、「Windows XP」を前提に書いてあります。
つまり、Vista以降のWindowsでは下記の方法は使えません

理由は、Vistaにおいて「システムの復元」に仕様変更があったためです。
具体的には、レジストリがファイルそのままの形でバックアップされなくなりました

「Windows 7」等でこのページと同様のことをするためには、
システム修復ディスク」から「システムの復元」を実行する必要があります
というか、それ以外の選択肢がありません。

逆に、ハードディスクからWindowsを起動できなくても「システムの復元」が使えるということは、
Windows標準の機能でレジストリを復旧できるわけで、
このページのように面倒な作業を行う必要もないのです。

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

まず、「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. 「記憶メディア」を選択して「/WINDOWS/system32/config」フォルダを指定
  4. 「OK」

としてください。

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

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

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

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

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

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

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

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

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

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

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

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