0 / 6
レジストリのルートキー(Registry Root Keys)
レジストリエディターを開くと、いちばん上にルートキーが5つ見える。このうち実際にデータを持つキーはHKLMとHKUの2つで、残りの3つはこの2つの中の1か所を指すか、2か所を合わせて見せる。
レジストリは、Windowsがユーザー、プログラム、ハードウェアの設定をまとめて保存する階層型データベースだ。ほかのコンピューターのレジストリにリモートで接続すると、HKLMとHKUの2つだけが見える。
1 / 6
HKLM: ハイブを読み込んだ実際のキー
HKLM(HKEY_LOCAL_MACHINE)を展開すると、SAM、SECURITY、SOFTWARE、SYSTEMのキーがある。各キーは、C:\Windows\System32\configフォルダーにある同じ名前のファイルを起動時に読み込んだハイブだ。コンピューターを使うすべてのユーザーに同じように適用される設定がここに集まる。HARDWAREのように、ファイルを持たず起動のたびに作り直すキーは図から省いた。
2 / 6
HKU: ユーザーごとのハイブを読み込んだ実際のキー
HKU(HKEY_USERS)の下には、サインインしたユーザーごとにSIDを名前にしたキーがある。ユーザーがサインインすると、Windowsはそのユーザーのハイブファイルを2つ読み込む。ユーザーフォルダー(C:\Users\ユーザー名)のNTUSER.DATはSIDのキーになり、同じフォルダー内のAppDataの下にあるUsrClass.datはSIDの後ろに_Classesが付いたキーになる。いちばん上の.DEFAULTキーは新しいユーザーの既定値ではなく、Windowsのサービスなどが使うシステムアカウント(LocalSystem)の設定だ。
3 / 6
HKCU: HKU内の現在のユーザーのキーを指す
HKCU(HKEY_CURRENT_USER)には、独自に保存されたデータがない。現在のユーザーのキーであるHKU\S-1-5-21-…-1001を別の名前で見せているだけだ。だからプログラムは、SIDを知らなくてもHKCUという名前で、自分が実行されているアカウント(ふつうはサインインしたユーザー)の設定を見つけられる。
4 / 6
HKCC: HKLM内のハードウェアプロファイルを指す
HKCC(HKEY_CURRENT_CONFIG)にも、独自に保存されたデータはない。HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Currentを別の名前で見せているだけだ。現在のハードウェア構成が標準の構成と違う点だけを持つ。
5 / 6
HKCR: 2か所のClassesを合わせて見せる
HKCR(HKEY_CLASSES_ROOT)は、ファイル拡張子をどのプログラムに関連付けるか、COMコンポーネントをどこに登録したかといった情報を見せる。COMは、あるプログラムがほかのプログラムの機能を呼び出して使えるようにするWindowsの部品の規格だ。この情報はHKLM\SOFTWARE\Classes(全ユーザーの既定値)とHKU\S-1-5-21-…-1001_Classes(現在のユーザーの設定)の2か所に分かれている。HKCRは2つを合わせて1つの画面で見せ、同じ項目が両方にあればユーザー側の値が見える。
6 / 6
HKCUに書いた値はHKUでも見える
プログラムがHKCU\Control Panel\Desktopにデスクトップの壁紙の値(WallPaper)を書き込む。HKCUはHKU\S-1-5-21-…-1001の別名なので、同じ値がHKU\S-1-5-21-…-1001\Control Panel\Desktopにもそのまま見える。値が一方からもう一方へ移るのではなく、最初から1つのキーに保存され、最終的にNTUSER.DATファイルに残る。