レジストリ構造

レジストリは、サブツリーとそのキーサブキー、および値エントリから成る階層構造で整理されています。

各コンピュータのレジストリの内容は、そのコンピュータにインストールされているデバイス、サービス、およびプログラムに応じて、大きく異なる可能性があります。次の図は、Windows 2000 で提供されるレジストリ エディタ (Regedit.exe) で表示した、レジストリの例です。

キーにはサブキーが含まれることがあり、サブキーにさらにサブキーが含まれることもあります。レジストリの大部分の情報はディスクに格納され、変化しないと考えられますが、"揮発性キー" に格納される一部の情報は、オペレーティング システムを起動するたびに上書きされます。

レジストリ サブツリー

Windows 2000 には、2 つのレジストリ サブツリーがあります。HKEY_LOCAL_MACHINEHKEY_USERS です。ただし、レジストリの情報を簡単に検索できるようにするために、レジストリ エディタ ユーティリティでは 5 つのサブツリーが表示されます。次の表は、5 つのサブツリーを示しています。

ルート キーの名前 説明
HKEY_LOCAL_MACHINE ローカル コンピュータのシステムに関する情報が含まれています。たとえば、バスの種類、システム メモリ、デバイス ドライバ、起動制御用のデータなど、ハードウェアとオペレーティング システムに関する情報が含まれます。
HKEY_CLASSES_ROOT 各種 OLE テクノロジで使われる情報やファイルクラス関連付けデータが含まれています。これは MS-DOS ベースの Windows のレジストリと同じです。特定のキーまたは値が HKEY_LOCAL_MACHINE\SOFTWARE\Classes または HKEY_CURRENT_USER\SOFTWARE\Classes のいずれか一方に含まれている場合は、対応するキーまたは値は HKEY_CLASSES_ROOT に含まれます。キーまたは値が両方の場所にある場合は、HKEY_CURRENT_USER にある値またはキーが HKEY_CLASSES_ROOT に含まれます。
HKEY_CURRENT_USER 環境変数、デスクトップの設定、ネットワーク接続、プリンタ、プログラムの設定など、現在、リモート ログオンではなく、対話型ログオンしているユーザーのユーザー プロファイルが含まれています。このサブツリーは HKEY_USERS サブツリーのエイリアスであり、HKEY_USERS\<現在のユーザーのセキュリティ ID> を指し示します。
HKEY_USERS アクティブに読み込まれたユーザー プロファイルと既定のプロファイルに関する情報が含まれています。HKEY_CURRENT_USER に格納される情報も含まれます。サーバーにリモートでアクセスしているユーザーのプロファイルは、サーバーのこのキーには含まれません。リモートでアクセスしているユーザーのプロファイルは、各自のコンピュータのレジストリに読み込まれます。
HKEY_CURRENT_CONFIG ローカル コンピュータのシステムを起動するときに使われるハードウェア プロファイルの情報が含まれています。この情報は、読み込むデバイス ドライバや使用するディスプレイの解像度などの設定を構成するために使われます。このサブツリーは、HKEY_LOCAL_MACHINE サブツリーの一部であり、HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current を指し示します。

各ルート キー名は HKEY_ から始まります。これにより、プログラムで使用できる "ハンドル" であることがソフトウェア開発者にわかります。ハンドルとは、リソースを識別し、プログラムからアクセスできるようにするための値です。

note 注

レジストリ ハイブとファイル

ハイブは、キー、サブキー、および値を記述しており、レジストリの階層構造の頂点から枝分かれしています。ハイブは、1 つのファイルと .log ファイルによってバックアップされます。これらのファイルは systemroot\System32\Config フォルダまたは systemdrive\Documents and Settings\<ユーザー名> フォルダに格納されます。文字列 systemroot は、Windows 2000 システム ファイルが格納されているディレクトリ名を表すプレースホルダです。文字列 systemdrive は、Windows 2000 システム ファイルが格納されているパーティションを表すプレースホルダです。たとえば、Annie というユーザーの Windows 2000 システム ファイルが C: パーティションの Winnt ディレクトリにある場合、ハイブ ファイルは C:\Winnt\System32\Config フォルダおよび C:\Documents and Settings\Annie フォルダに格納されます。ハイブのことをレジストリ ファイルやレジストリ ログ ファイルと呼ぶこともあります。

既定の設定では、DEFAULTSAMSECURITYSOFTWARESYSTEM などの大部分のハイブ ファイルは、systemroot\System32\Config フォルダに格納されます。Windows 2000 では、Ntuser.dat と Ntuser.dat.log も含めて、コンピュータの各ユーザーのユーザー プロファイル情報が格納される場所は、オペレーティング システムを初めてインストールしたのか、Windows 95、Windows 98、または Windows NT からのアップグレードとしてインストールしたのかに応じて異なることがあります。初めてのインストールや、Windows 95 および Windows 98 からのアップグレードの場合は、Ntuser.dat および Ntuser.dat.log ファイルは systemdrive\Documents and Settings\<ユーザー名> フォルダに格納されます。Windows NT からアップグレードする場合は、Ntuser.dat および Ntuser.dat.log ファイルは systemroot\Profiles\<ユーザー名> フォルダに格納されます。

Windows 2000 レジストリの各ハイブは、標準ファイル セットに関連付けられます。次の表は、Windows 2000 が実行されているコンピュータの標準ハイブとファイルの一覧です。

レジストリ ハイブ ファイル名
HKEY_LOCAL_MACHINE\SAM Sam と Sam.log
HKEY_LOCAL_MACHINE\SECURITY Security と Security.log
HKEY_LOCAL_MACHINE\SOFTWARE Software と Software.log
HKEY_LOCAL_MACHINE\SYSTEM System と System.log
HKEY_CURRENT_CONFIG System と System.log
HKEY_CURRENT_USER Ntuser.dat と Ntuser.dat.log
HKEY_USERS\.DEFAULT Default と Default.log

レジストリ キーの値エントリ

各レジストリ キーまたはサブキーには、値エントリというデータを入れることもできます。値エントリの中には、各ユーザー固有の情報を格納するものと、コンピュータのすべてのユーザーに適用されるものとがあります。値エントリは、値の名前、値のデータ型、および値自体の 3 つの部分から構成されています。値エントリの 3 つの部分は、常に次の順序で表示されます。

値エントリの構造

データ型はデータの形式を示します。0 〜 0x7FFFFFFF のデータ型は、システムでの定義用に予約されています。プログラムでは、なるべくこれらのデータ型を使ってください。ただし、0x80000000 〜 0xFFFFFFFF のデータ型もプログラムで使用できるように予約されています。

次の表は、現在システムで定義され、使用されているデータ型の一覧です。

データ タイプ 説明
REG_BINARY 未加工のバイナリ データ。ほとんどのハードウェア コンポーネント情報は、バイナリ データとして格納され、レジストリ エディタでは 16 進形式で表示されます。
REG_DWORD 4 バイト長の数で表現されるデータ。デバイス ドライバやサービスの多くのパラメータは、この型です。レジストリ エディタでは、2 進形式、16 進形式、または 10 進形式で表示されることがあります。
REG_EXPAND_SZ 可変長データ文字列。このデータ型には、プログラムやサービスでデータを使うときに解決される変数が含まれます。
REG_MULTI_SZ 複数行文字列。人間が判読できる形式の一覧や複数の値を含む値は通常、このデータ型です。エントリはスペース、カンマ、またはその他の記号で区切られます。
REG_SZ 固定長テキスト文字列。
REG_FULL_RESOURCE_DESCRIPTOR ハードウェア コンポーネントまたはドライバのリソース一覧を格納するように設計された、ネストした配列。

レジストリのサイズ制限

レジストリ データはページ プールに格納されます。ページ プールとは、使われないときは物理ディスクに書き込まれる仮想メモリの一部です。レジストリのサイズ制限は、プログラムがページ プールにレジストリ データを完全に書き込むことができないように制限する値です。

レジストリのサイズを表示または設定するには、コントロール パネルの [システム] をダブルクリックします。[詳細] タブの [パフォーマンス オプション] をクリックし、[変更] をクリックします。レジストリのサイズ設定の詳細については、「レジストリのサイズの上限を変更する」および「仮想メモリのページング ファイルのサイズを変更する」を参照してください。

既定の設定では、レジストリのサイズの上限は、ページ プールのサイズの 33% です。レジストリのサイズ制限は、ページ プールのサイズの最大 80% まで認められます。レジストリの可能な最小サイズは 16 MB です。レジストリのサイズを 16 MB より小さい値に設定しようとすると、16 MB に設定されます。

レジストリのサイズは、使用しているコンピュータが大規模なネットワークのドメイン コントローラである場合か、レジストリが小さすぎることを警告するエラー メッセージが表示された場合だけ、変更するようにしてください。レジストリのサイズ制限に対して大きな値を設定しても、レジストリで実際に必要とされる容量しか使われません。さらに、大きな値を設定しても、制限の範囲内の最大領域をレジストリで実際に使用できるとは限りません。