Windows レジストリについて

§1.概要

Windows95以来Windowsは、システム設定、ハードウェアの設定、ユーザの嗜好を記憶するために中央集権的階層構造データベースを使用してい ます。このデータベースはWindows Registryと呼ばれますが、一般的にはレジストリとして知られています。新たなハードウェアがコンピュータにインストールされたり、ユーザが壁紙や スクリーンセーバーを変更したり、あるいは新たにソフトウェアをインストールしたりすると、これらの情報はレジストリに記憶されます。その後、OSは何ら かの操作をしている間中、継続的にこの情報を参照します。レジストリを理解することはコンピュータが内部的に行っていることを、より理解することに役立つ ものと思われます。ただ、レジストリを操作するときに重要なことは、レジストリを不正に修正すればOSの使用に問題を発生する可能性があるということで す。

§2.レジストリ

レジストリはWindowsオペレーティングシステムの中核です。レジストリ無しではWindowsは稼動しません。新しいハードウェアやソフトウェアを インストールした時、その情報はレジストリ中に記憶されます。ハードウェアやソフトウェアが起動された時、その情報をWindowsが取得できるように設 定されています。Windowsは起動時にレジストリ中の設定を読み込み、ロードすべきドライバは何か、供給されるべき設定は何か、割り当てられるべきリ ソースは何かということを認識します。この情報はハードドライブ上のレジストリに記憶されているためWindowsは起動する度に、この情報を利用するこ とになります。

レジストリはオペレーティングシステムの設定だけでなく、ユーザの嗜好やアプリケーションの設定もまたレジストリに記憶されます。デスクトップの壁紙やス クリーンセーバーを変更した時、これらの詳細はレジストリに記憶されます。これらの設定はWindowsを再起動したときに利用可能となり自動的にロード されます。ユーザがファイルをダウンロードする時に使用するディレクトリはどこか、ワードプロセッサ中で使用するDefaultのフォントは何かというよ うなアプリケーションの設定も此処に記憶されます。レジストリに含まれる情報は、オペレーティングシステムが使用する肝要なものだけでなく、ユーザの嗜好 で行ったWindowsのカスタマイズの情報も閲覧することが出来ます。

2-1.レジストリの構造

レジストリの構造は各人のコンピュータのディレクトリ/ファイル・ツリーと類似の階層構造です。ハイブ(Hive;『蜂の巣』を意味する)もしくはメイ ン・キー、キー、サブキー、値からなります。

    ハイブ(Hive)

    ハイブはデータ階層構造の先頭に位置し、各ハイブはそれぞれのカテゴリ情報を含んでいます。例えば、あるハイブは特定ユーザのログ情報を含んでいるし、別 のハイブはコンピュータ中にインストールされているハードウェアについての情報を含んでいます。Windowsのバージョンにより、5乃至6個の異なった ハイブが稼動しています。以下に6つのハイブの概要を示します。

    HKEY_CURRENT_USER (HKCU)
    このハイブは現在ログオンしている特定のユーザの挙動と設定を含んでいます。別のユーザが、このマシンにログオンすると、このハイブの情報は、そのユーザ に対応するよう変更されます。

    HKEY_LOCAL_MACHINE (HKLM)
    このハイブは、当該コンピュータの設定を含んでいます。このハイブの情報はログオンユーザの相違によって変更されることはありません。

    HKEY_CLASSES_ROOT (HKCR)
    このハイブは「ファイルの関連付け」や「ショートカット」のようなユーザインターフェイスのコアに属する情報を含んでいます。

    HKEY_USERS (HKU)
    このハイブは、今まで当該マシンにログオンしたことのある全てのユーザ情報を含んでいます。

    HKEY_CURRENT_CONFIG (HKCC)
    このハイブは、現在のハードウェア設定についての情報を含んでいます。このハイブは、HKEY_LOCAL_MACHINE (HKLM)に関連付けられています。

    HKEY_DYN_DATA (HKDD)
    このハイブは Windows 95/98/ME にのみ存在します。Plug and Playについての情報を含んでいます。このハイブは、HKEY_LOCAL_MACHINE (HKLM)に関連付けられています。

    キー

    キーはレジストリ中の構成単位です。キーは値もしくは下位のサブキーを含みます。サブキーは、それ自身で下位のサブキーを含むことが出来ます。キーは下位 のサブキーや値(Windows Explorerにおけるファイルに相当)を含むことができる点で、Windows Explorerにおけるフォルダに類似しています。

    値はキーやサブキー中に含まれる実際のデータですが、レジストリ中に記憶される値の型には数種類あります。良く用いられているのは、バイナリ、文字列、 DWORDです。

レジストリの閲覧に当っては最終的に到達したい情報へのナビゲーションとして、ハイブ、キー、サブキーに注目すべきです。レジストリのキーの一例を以下に 示します。このキーは、IEを起動したときに表示されるスタートページの設定です。

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\\Start Page

このキーを各コンポーネントに分解すると以下のようになります。
  • HKEY_CURRENT_USER = このキーが関連付けられているハイブ
  • Software = キー
  • Microsoft = サブキー
  • Internet Explorer = サブキー
  • Main = サブキー
  • Start Page = 実際のデータが記憶されている値。この場合は、IEを起動したときに表示されるスタートページの設定

2-2.レジストリの存在場所

レジストリはそれ自身コンピュータ上に特定のファイルとして保存されています。以下にWindowsのバージョンごとのレジストリの位置とファイル名を示 しておきます。

Windows 98
    位置
    C:\Windows

    レジストリファイル名
    User.dat、System.dat

Windows ME
    位置
    C:\Windows

    レジストリファイル名
    Classes.dat、User.dat、System.dat

Windows NT4.0、2000、XP、Server2003
    位置
    Systemroot\System32\Config
    Systemroot\Profiles\Username

    レジストリファイル名
    Sam、Sam.log、Sam.sav
    Security、Security.log、Security.sav
    Software、Software.log、Software.sav
    System、System.alt、System.log、System.sav
    System、System.alt、System.log、System.sav、Ntuser.dat、Ntuser.dat.log
    Default、Default.log、Default.sav

§3.レジストリの編集方法

レジストリの値を修正するにはレジストリエディタと呼ばれるプログラムを使用します。Windowsのregedit.exe、一般的にはレジストリエ ディタとして知られています。regedit.exeを起動するには、スタート>ファイル名を指定して実行 で、名前入力ボックスに regedit と 入力しOKボタンをクリックします。この操作でレジストリエディタが起動します。
レジストリエディタは中央で二つの画面に分割されています。左側のペインはナビゲーションペインです。Defaultで全てのハイブをリストしていて、各 ハイブの左には"+"と"-"が付いています。この"+"と"-"をクリックすることで、各ハイブに従属するキーやサブキーを表示したり、折畳んだりでき ます。求める位置に到達するまでサブキーを操縦します。それから、そのサブキーの上を一度クリックして選択します。右ペインには、そのキーに関連付けられ た値のリストが表示されているはずです。

上図がレジストリエディタのイメージです。表示しているのは
HKEY_CURRENT_USER\Control Panel\Colorsです。
上図において、HKEY_CURRENT_USERがハイブ。Control Paneがキー。Colorsがサブキー。右ペインはサブキーColorsに含まれる全ての値を表示しています。

値を修正するには、値の名前の上でダブルクリックします。上図類似の画面が表示されます。値の入力フィールドに適切な情報入力し、OKボタンをクリックし ます。
値を削除するためには、値の名前をダブルクリックする代わりに右クリックします。ポップアップしたメニューから削除を選択します。キーやサブキーを削除す る場合にもこの方法を用います。
値を追加するためには、メニューから「編集」>「新規」と進み、適切なデータ型を選択します。

レジストリ中の値を入出力することも可能です。特定のキーやサブキーをエキスポートするためには、出力したいキーの上を一度クリックし、メニューから「レ ジストリ」>「レジストリ ファイルの書き出し」を選択します。ファイル保存ダイアログボックスでレジストリキーをエキスポートするディレクトリとファイル名を指定します。
同様に、「レジストリ」>「レジストリ ファイルの取り込み」で以前エキスポートしたファイルをインポートすることが出来ます。

§4.レジストリのバックアップ

ウィルス、スパイウェア、その他マルウェアはレジストリに損傷を与えます。このような場合に備えてレジストリをバックアップしておくことは重要です。レジ ストリのクリーンなコピーを持っていれば、危機に際してハードドライブ上にクリーンなレジストリを復元することができます。Windowsの各バージョン ごとのバックアップとリストアの方法を以下に示します。

4-1.Windows 95

バックアップ

  • (1)コンピュータをセーフモードで起動し、メニュー画面で"Safe Mode Command Prompt Only"を選択
  • (2)コマンドプロンプトで以下のように入力し、各行末で ENTER キーを押す。(以下は、Windows95のインストー ルフォルダをWindowsとしています)
  •  cd Windows
  •  attrib -r -h -s system.dat
  •  attrib -r -h -s user.dat
  •  copy system.dat *.bak
  •  copy user.dat *.bak
  • 以上の操作は、system.bak、user.bakというファイルが存在しないことを前提にしています。もしも同名のファイルが存在しているのであれ ば、この操作をする前にそのファイルの拡張子を別のものに変更してください(.bk0 等)。
  • (3)コンピュータを通常モードで起動

リストア

  • (1)コンピュータをセーフモードで起動し、メニュー画面で"Safe Mode Command Prompt Only"を選択
  • (2)コマンドプロンプトで以下のように入力し、各行末で ENTER キーを押す。(以下は、Windows95のインストー ルフォルダをWindowsとしています)
  •  cd Windows
  •  attrib -r -h -s system.dat
  •  attrib -r -h -s system.da0
  •  attrib -r -h -s user.dat
  •  attrib -r -h -s user.da0
  •  ren system.dat system.daa
  •  ren system.da0 system.da1
  •  ren user.dat user.daa
  •  ren user.da0 user.da1
  •  copy system.bak system.dat
  •  copy user.bak user.dat
  • 以前にバックアップしたレジストリが".bak"以外の拡張子をもつのであれば、上記の拡張子部分は適切な物に変更する必要があります。
  • (3) コンピュータを通常モードで起動

4-2.Windows 98、ME

バックアップ

  • (1)スタート>ファイル名を指定して実行 に進む。
  • (2)名前欄の入力フィールドに scanregw と入力し、OKボタンクリック
  • (3)エラーのスキャンの後レジストリをバックアップするか否かを尋ねるメッセージボックスが表示されるので、「はい」をクリッ ク。
  • (4)レジストリのバックアップが作成される。終了後のメッセージボックスでOKボタンをクリック。

リストア

  • (1)PC起動直後のメーカーロゴ画面でCTRLキーを押したままにする。セーフモードのメニュー画面で、
  • (2−1)Windows98の場合は、"Safe Mode Command Prompt Only"で起動。
  • (2−2)WindowsMEの場合は、"Start Computer without CD-ROM Support"で起動。
  • (3)コマンドプロンプトで、C:\windows\command\scanreg /restore と入力しEnterキーを押す。
  • (4)今までのレジストリのバックアップが日付つきで表示されるので、適切なバックアップを選択しEnterキーを押す。
  • (5)scanregはレジストリのエラーをチェックした後、確認のメッセージボックスを表示する。Enterキーを押してコン ピュータ再起動。

4-2.Windows XP、2000、2003

バックアップ

  • (1)スタート>すべてのプログラム>アクセサリ>システム ツール と進み、「バックアップ」 をクリック。
  • (2)「次へ」をクリック。
  • (3)「ファイルと設定のバックアップを作成する」を選択し、「次へ」をクリック。
  • (4)以下、バックアップ作成項目やバックアップメディアを指定し「次へ」をクリック。
  • (5)「完了」ボタンを押す。
  • (6)「バックアップの進行状況」ダイアログ ボックスが表示され、"バックアップ が完了しました。" というメッセージが表示されたら、「閉じる」 をクリック。

リストア_手法1

  • (1)スタート>すべてのプログラム>アクセサリ>システム ツール と進み、「バックアップ」 をクリック。
  • (2)「次へ」をクリック。
  • (3)「ファイルと設定を復元する」を選択し、「次へ」をクリック。
  • (4)表示されたスクリーンは以前実行したバックアップの全てを表示しているので希望する復元を選択する。
  • (5)「次へ」ボタンを押す。
  • (6)「完了」ボタンを押す。
  • (7)復元が終了するとレポートが表示されるので、「閉じる」ボタンを押しプログラムを終了する。

リストア_手法2(XP、2003)

この手法はWindowsXP、2003ユーザのみです。
  • (1)WindowsのCDディスクに挿入しコンピュータを起動。
  • (2)"Press Any Key to Boot from CD"でEnterキーを押す。
  • (3)「インストール済みのWindwosXPを回復コンソールを使って修復する」ので"R"キーを押す。
  • (4)表示された画面で「Windowsのインストール」を選択する(大多数の方はこのオプションしか表示されていない筈で す)。1を入力して、Enterキーを押す。
  • (5)アドミニストレータのパスワードを入力しEnterを押す。パスワードを設定していなければ、何もせずEnterキーを押 す。
  • (6)プロンプトで、cd repair と入力しEnterを押す。
  • (7)以下の行を入力。行末では必ずEnterを押す。
  •  copy default c:\windows\system32\config
  •  copy sam c:\windows\system32\config
  •  copy security c:\windows\system32\config
  •  copy software c:\windows\system32\config
  •  copy system c:\windows\system32\config
  •  もしも、同名ファイルの存在による上書きを求められたら、Yキーを押す。
  • (8)終了後、Exitと入力しEnterを押す。

レジストリとバックアップ方法を理解することはコンピュータを安全に使用する上で大変重要なことです。ただ、レジストリを不正に修正すると最悪の場合、 OSが起動しなくなります。リスクを伴う操作ですから十分注意して取り扱ってください。