Windowsを起動せずにレジストリを修正する

Windowsが起動できなくても

レジストリは、あらゆる設定が1箇所にまとめられているため、効率的ではありますが、
反面、レジストリにおいて深刻な問題が発生すると、Windows自身も巻き添えを食らってしまいます。

特に、コンピュータウイルスのような悪意のあるプログラムは、
高い確率でレジストリを勝手に書き換えます。
その結果、Windowsを起動することもままならなくなってしまいます。

Windowsを起動できない原因がレジストリにあるとわかっていれば、
それを修正したらいいだけなんですが、
Windowsが起動できないとレジストリエディターを起動できず、
そもそもレジストリを編集することができない
というデッドロックに陥ります。

そんなときは、他のシステムを使ってWindowsを起動した後、レジストリを修正します。

緊急時におけるレジストリエディター起動方法

「システム回復オプション」から起動する

「Windows 7」では、Windowsのシステムと起動領域が完全に別のパーティションに分けられました。
そのおかげで、Windowsが起動できなくなったとしても、
「システム回復オプション」を用いることでWindowsを修復できます。
つまり、「システム回復オプション」からレジストリエディターを起動することが可能です。

「システム回復オプション」は、セーフモードと似て非なるものです。
特に、普段使っているWindowsとは別のシステムで動作するというのが大きいです。

「システム回復オプション」の起動方法は、セーフモードに似ています。
パソコンの電源を入れ、ハードディスクにアクセスし始めたタイミングで「F8」キーを押します。
連打するぐらいの感じでいいです。

「詳細ブートオプション」が表示されるので、その中から「コンピューターの修復」を選択すると、
「システム回復オプション」が起動します。

システム回復オプション

そこから「コマンドプロンプト」を起動し、

regedit

と入力して「Enter」キーを押せば、レジストリエディターが起動します。

ただし、「システム回復オプション」からレジストリエディターを起動した場合は、
できることに制限があります

詳細については後述します。

「Windows PE」から起動する

「Windows PE」が何かということについては、ここでは説明を省略します。
ひとことで言うと、CDから直接起動できるWindowsです。
「Windows PE」にもレジストリエディターが含まれているので、これを使用します。

「Windows PE」起動ディスクを作る必要はありますが、
汎用性が極めて高く、「システム回復オプション」のような制限もありませんので、
可能ならこちらの方法をおすすめします。

何はともあれ、「Windows PE」起動ディスクがなければ話になりません。
「Windows PE」起動ディスクの作成方法については、下記ページを参照。

「WinPe-tch Direct」の使い方

ちなみに「WinPe-tch Direct」とは、「Windows PE」起動ディスクを自動で作ってくれるソフトのことです。

Windows PE

「WinPe-tch Direct」によって作成した「Windows PE」起動ディスクには、
プログラムランチャーが組み込まれているので、
アイコンをクリックするだけでレジストリエディターが起動できます
もちろん、コマンドプロンプトから「regedit」と入力しても、レジストリエディターを起動できます。

他システムのレジストリを読み込む

ここまでに記載してきた方法でレジストリエディターを起動すると、
普段使っているWindowsのシステム外でレジストリエディターを起動することになります。
従って、表示されているレジストリは、普段使っているWindowsのレジストリではなく、
「システム回復オプション」や「Windows PE」のレジストリ
です。

修正対象のレジストリは、「Windows PE」等のレジストリではなく、普段使っているWindowsのレジストリのはずです。
そこで、現在起動しているシステム外のレジストリを読み込む操作が必要になります。

ハイブの読み込み

一連の操作を書くと、レジストリエディターにおいて、

  1. 「HKEY_LOCAL_MACHINE」または「HKEY_USERS」を選択した状態で、
    メニューバーの「ファイル」から「ハイブの読み込み」
  2. 修正対象のレジストリファイルを参照して「開く」
  3. キー名(仮なので、「temp」とかでいい)を入力して「OK」

という流れですが、いろいろと注釈が必要です。

まず、起動中のレジストリエディターに、他のレジストリファイルの内容を読み込む必要があるんですが、
マウントできるのは「HKEY_LOCAL_MACHINE」か「HKEY_USERS」の直下のみです。
従って、「HKEY_LOCAL_MACHINE」か「HKEY_USERS」を選択した状態で、
以後の操作を行う必要があります

じゃないと、「ハイブの読み込み」を選択できず、レジストリファイルを開けません。

修正対象のレジストリファイルがどこにあるのかという問題もあります。
ここで、多くのケースにおいて修正する対象になるであろうレジストリファイルの場所を挙げておきます。

HKEY_CURRENT_USER C:\Users\(ユーザー名)\NTUSER.DAT ※Vista以降。
C:\Documents and Settings\(ユーザー名)\NTUSER.DAT ※XP以前。
HKEY_LOCAL_MACHINE\SOFTWARE C:\Windows\System32\config\SOFTWARE
HKEY_LOCAL_MACHINE\SYSTEM C:\Windows\System32\config\SYSTEM
※ただし、Windowsのインストールされているドライブを「C:」とした場合。
 「システム回復オプション」や「Windows PE」から起動した場合、ドライブレターが変わる可能性があります。

レジストリは複数のファイルによって構成されています。
レジストリエディターでの見た目と実際のファイルは必ずしも一致しないので注意してください。

キー名の入力

レジストリファイルを指定し、外部レジストリを読み込む際に、
マウントするキー名の入力を求められます

キー名は、自分が判別できれば何でもいいです。

たとえば、キー名に「temp」と入力すれば、
「HKEY_LOCAL_MACHINE」等の直下に「temp」というレジストリキーが追加され、
その中に指定したレジストリファイルの内容が展開されます。
つまり、レジストリエディターの表示内容がごっそり入れ替わるのではなく、
新たなレジストリキーとして仮にマウントしている
わけです。

以上の操作が完了すれば、あとは通常通りレジストリを編集することができます。

「システム回復オプション」からでは「NTUSER.DAT」にアクセスできない

「システム回復オプション」からレジストリエディターを起動すると、
「NTUSER.DAT」を参照することができません。
これは、「システム回復オプション」が、Windowsのユーザーとしてログオンしているからだと思われます。

従って、「システム回復オプション」からは「HKEY_CURRENT_USER」を修正できません
注意してください。

レジストリの修正

レジストリにおいて具体的にどの部分を修正すべきなのかは、事象の数だけ違います。
でも、ありがちな箇所というのはあるので、例として挙げておきます。

  • HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

つまり、スタートアップです。

上記レジストリキーに登録されているプログラムは、Windowsの起動と同時に実行されます
つまり、これらのプログラムに問題があると、Windowsが起動できなくなることがあります。

コンピューターウイルスも、このレジストリキーを標的とすることが多いので、
確認しておくべき場所だと思います。

レジストリファイルへの書き込み

レジストリを修正し終えたら、
仮にマウントしているレジストリキーの内容を、元のレジストリファイルに書き戻します。

  1. マウントしたレジストリキー(ここでは「temp」)を選択した状態で、
    メニューバーの「ファイル」から「ハイブのアンロード」
  2. 確認を求められるので「はい」

つまり、この操作を行うまでは、編集したレジストリの内容は保存されていません
通常のWindowsから起動するレジストリエディターでは、変更内容はそのまま保存されますが、
ここでは外部のレジストリファイルを読み込んでいるので、このような挙動になります。

注意点として、「ハイブのアンロード」を行う際は、
マウントしたレジストリキーを選択している必要があります

さもないと、アンロードができずにエラーが出ます。

レジストリファイルへのアンロードが完了したら、再起動してWindowsのシステムから起動してください。
レジストリが正しく修正され、障害となるものが取り除かれていれば、
起動できなかったWindowsも復旧できるかもしれません。