レジストリとは?
マイクロソフトの用語集によると、レジストリは以下のように記載してあります。
A database repository for information about a computer's configuration. The registry contains information that Windows continually references during operation, such as: profiles for each user; the programs installed on the computer and the types of documents that each can create; property settings for folders and program icons; what hardware exists on the system; which ports are being used. The registry is organized hierarchically as a tree, and it is made up of keys and their subkeys, hives, and entries. |
コンピューターの構成に関する情報のデータベースリポジトリ。レジストリには、Windowsが操作中に継続的に参照する次のような情報が含まれています。各ユーザーのプロファイル。コンピュータにインストールされているプログラムと、それぞれが作成できるドキュメントの種類。フォルダとプログラムアイコンのプロパティ設定。システムに存在するハードウェア。どのポートが使用されているか。レジストリはツリーとして階層的に編成されており、キーとそのサブキー、ハイブ、およびエントリで構成されています。 |
なんだか難しく見えますが、ざっくばらんに言ってしまうと、Windowsというシステムを動かすのに必要なデータベースの事です。
最初に言っておくと、よく知らないでレジストリを弄るとWindowsの動作がおかしくなったり、最悪システムデータが連鎖的に破損するので厳に注意が必要です。
レジストリの構造
レジストリは以下の要素からなっていますが、基本的には「キー」と「値」の2つの基本要素からなっています。
1 | ルートキー | レジストリは大きく分けて5つにグルーピングされます。このグループの大元の事をルートキーと呼びます。これはシステムで使用される定義済みのキーです。 |
2 | サブキー | ルートキー配下のキーをサブキーと呼びます。 |
3 | キー | 目的としているレジストリが入っている項目をキーと呼びます。 |
4 | 値の名前 | レジストリの値の名前です。 |
5 | 値の種類 | レジストリの値にはデータの型があります。 |
6 | 値のデータ | レジストリの値に実際に入っているデータです。 |
7 | ハイブ | レジストリの実体はdatやlogなどの拡張子のデータです。このデータの事をハイブと言います。※正確には違います。 |
例えば以下のレジストリでは
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search\SearchboxTaskbarMode |
ルートキー | HKEY_CURRENT_USER |
サブキー | Software\Microsoft\Windows\CurrentVersion\Search |
キー | Search |
値の名前 | SearchboxTaskbarMode |
値の種類 | REG_DWORD |
値のデータ | 0 |
ルートキー
ルートキーは以下の5つがあり、それぞれどんな内容の情報を格納するかで分けられています。。ルートキーはそれぞれ短縮形表示があり、コマンドでレジストリを操作する場合は短縮形の表示でも有効であったりします。
ルートキー | 短縮形表示 | 簡単な説明 |
---|---|---|
HKEY_CLASSES_ROOT | HKCR | HKLM\Softwareのサブキー。 |
HKEY_CURRENT_USER | HKCU | 現在ログオンしているユーザのプロファイル情報など。 |
HKEY_LOCAL_MACHINE | HKLM | ハード、デバイスなどに関係した情報など |
HKEY_USERS | HKU | ログオンしたすべてのユーザののプロファイル情報と規定のプロファイル情報がある。 |
HKEY_CURRENT_CONFIG | HKCC | OS起動時に読み込まれるハードウェアのプロファイルなど |
レジストリで変更できるもの
レジストリで変更できるものは、レジストリの数だけあるので色々あります。以下は一例です。
- 各ユーザーのプロファイル
- 既定のプログラムとファイルの関連付け
- フォルダとプログラムアイコンのプロパティ設定
- システムに存在するハードウェア情報
- どのポートが使用されているか。
レジストリの編集方法
試しにレジストリを一つ変更してみます。
レジストリの編集手段
レジストリはいくつかの方法で編集する事ができます。
・レジストリエディタ(regedit.exe)を使う。
・コンソールエディタ(reg.exe)を使う。
・グループポリシーエディタを使う。
・Wshを使う。
・WMIを使う。
ハイブ(hive)について
※書きかけ
最後にハイブの説明です。通常はハイブについて触る事はないかもしれません。
ハイブは、OSの起動時またはユーザーのログイン時などに、メモリにロードされるレジストリ(と値)です。
ハイブは「キー」、「サブキー」、「値」からなるグループであり、「ntuser.dat」などの実データからなります。
この実データの事をハイブファイルと読んだり、省略してハイブと言ったりします。
ハイブファイルは大体以下のフォルダに格納されています。
C:\Windows\System32\config |
ハイブは、ソフトウェア情報、ハード情報、SAM情報などの種類ごとに分けられています。
以下はMicrosoftの文書に記載のある、レジストリのハイブと、それに対応したファイルです。
レジストリハイブ | ハイブファイル |
HKEY_CURRENT_CONFIG | System |
HKEY_CURRENT_USER | Ntuser.dat |
HKEY_LOCAL_MACHINE\SAM | Sam |
HKEY_LOCAL_MACHINE\Security | Security |
HKEY_LOCAL_MACHINE\Software | Software |
HKEY_LOCAL_MACHINE\System | System |
HKEY_USERS\.DEFAULT | Default |
ハイブファイルの形式について
ハイブファイルには、本体、バックアップ、ログの三種類があります。
ただし、「HKEY_LOCAL_MACHINE\Systemハイブのバックアップ」のみ専用の拡張子があります。
また、ntuser.datのdatは拡張子の扱いではないため、「ntuser.dat.log」などの表記になります。
拡張子 | 説明 |
なし | 本体 |
.alt | HKEY_LOCAL_MACHINE\Systemハイブのバックアップ |
.log | ハイブ変更のログファイル |
.sav | ハイブのバックアップ |