定義済みキー

アプリケーションは、レジストリにデータを追加する前にキーを開く必要があります。 キーを開くには、アプリケーションが既に開いているレジストリ内の別のキーへのハンドルを指定する必要があります。 システムは、常に開いている定義済みキーを定義します。 定義済みのキーは、アプリケーションがレジストリ内を移動し、システム管理者がデータのカテゴリを操作できるようにするツールを開発するのに役立ちます。 レジストリにデータを追加するアプリケーションは、常に定義済みのキーのフレームワーク内で動作する必要があるため、管理ツールは新しいデータを検索して使用できます。

アプリケーションでは、レジストリへのエントリ ポイントとして、これらのキーへのハンドルを使用できます。 これらのハンドルはレジストリのすべての実装に対して有効ですが、ハンドルの使用はプラットフォームによって異なる場合があります。 さらに、特定のプラットフォームに対して他の定義済みハンドルが定義されています。 定義済みのキーのハンドルを次に示します。

Handle 説明
HKEY_CLASSES_ROOT
このキーに従属するレジストリ エントリは、ドキュメントの型 (またはクラス) と、それらの型に関連付けられているプロパティを定義します。 シェルおよび COM アプリケーションでは、このキーの下に格納されている情報が使用されます。
このキーは、DDE と OLE のサポートに関する情報を格納することで、Windows 3.1 登録データベースとの下位互換性も提供します。 ファイル ビューアーとユーザー インターフェイス拡張機能は、OLE クラス識別子 をHKEY_CLASSES_ROOTに格納し、インプロセス サーバーはこのキーに登録されます。
このハンドルは、異なるユーザーを偽装するサービスまたはアプリケーションでは使用しないでください。
詳細については、「 HKEY_CLASSES_ROOT」を参照してください。
HKEY_CURRENT_CONFIG
ローカル コンピューター システムの現在のハードウェア プロファイルに関する情報が含まれます。 HKEY_CURRENT_CONFIGの情報では、現在のハードウェア構成と標準構成の違いのみが説明されています。 標準ハードウェア構成に関する情報は、HKEY_LOCAL_MACHINEソフトウェア キーとシステム キーの下に格納されます。
HKEY_CURRENT_CONFIG は、 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Hardware Profiles\Currentのエイリアスです。
詳細については、「 HKEY_CURRENT_CONFIG」を参照してください。
HKEY_CURRENT_USER
このキーに従属するレジストリ エントリは、現在のユーザーの基本設定を定義します。 これらの環境設定には、環境変数の設定、プログラム グループ、色、プリンター、ネットワーク接続、アプリケーション設定に関するデータが含まれます。 このキーを使用すると、現在のユーザーの設定を簡単に確立できます。キーは、 HKEY_USERSの現在のユーザーのブランチにマップされます。 HKEY_CURRENT_USER、ソフトウェア ベンダーは、アプリケーション内で使用する現在のユーザー固有の基本設定を格納します。 たとえば、Microsoft は、アプリケーションで使用する HKEY_CURRENT_USER\Software\Microsoft キーを作成し、各アプリケーションで Microsoft キーの下に独自のサブキーを作成します。
HKEY_CURRENT_USERHKEY_USERSの間のマッピングはプロセスごとに行われ、プロセスが初めてHKEY_CURRENT_USER参照する際に確立されます。 マッピングは、 HKEY_CURRENT_USERを参照する最初のスレッドのセキュリティ コンテキストに基づいています。 このセキュリティ コンテキストにレジストリ ハイブが HKEY_USERSに読み込まれていない場合、マッピングは HKEY_USERS\.Defaultで確立されます。 このマッピングが確立されると、スレッドのセキュリティ コンテキストが変更された場合でも、それが保持されます。
HKEY_CURRENT_USERのすべてのレジストリ エントリ (HKEY_CURRENT_USER\Software\Classesの下のものを除く) は、ローミング ユーザー プロファイルのユーザーごとのレジストリ部分に含まれます。 ローミング ユーザー プロファイルから他のエントリを除外するには、 HKEY_CURRENT_USER_LOCAL_SETTINGSに保存します。
このハンドルは、異なるユーザーを偽装するサービスまたはアプリケーションでは使用しないでください。 代わりに、 RegOpenCurrentUser 関数を 呼び出します。
詳細については、「 HKEY_CURRENT_USER」を参照してください。
HKEY_CURRENT_USER_LOCAL_SETTINGS
このキーに従属するレジストリ エントリは、コンピューターにローカルな現在のユーザーの基本設定を定義します。 これらのエントリは、ローミング ユーザー プロファイルのユーザーごとのレジストリ部分には含まれません。 Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP/2000: このキーは、Windows 7 および Windows Server 2008 R2 以降でサポートされています。

HKEY_LOCAL_MACHINE
このキーに従属するレジストリ エントリは、バスの種類、システム メモリ、インストールされているハードウェアとソフトウェアに関するデータなど、コンピューターの物理的な状態を定義します。 これには、現在の構成データを保持するサブキーが含まれます。これには、プラグ アンド プレイ情報 (システム上にあるすべてのハードウェアの完全な一覧を含む Enum ブランチ)、ネットワーク ログオン設定、ネットワーク セキュリティ情報、ソフトウェア関連情報 (サーバー名やサーバーの場所など)、その他のシステム情報が含まれます。
詳細については、「 HKEY_LOCAL_MACHINE」を参照してください。
HKEY_PERFORMANCE_DATA
このキーに従属するレジストリ エントリを使用すると、パフォーマンス データにアクセスできます。 データは実際にはレジストリに格納されません。レジストリ関数を使用すると、システムはそのソースからデータを収集します。
HKEY_PERFORMANCE_NLSTEXT
このキーに従属するレジストリ エントリは、コンピューター システムが実行されている領域のローカル言語のカウンターを記述するテキスト文字列を参照します。 これらのエントリは、Regedit.exeおよびRegedt32.exeでは使用できません。Windows 2000: このキーはサポートされていません。

HKEY_PERFORMANCE_TEXT
このキーに従属するレジストリ エントリは、米国英語のカウンターを記述するテキスト文字列を参照します。 これらのエントリは、Regedit.exeおよびRegedt32.exeでは使用できません。Windows 2000: このキーはサポートされていません。

HKEY_USERS
このキーに従属するレジストリ エントリは、ローカル コンピューター上の新しいユーザーの既定のユーザー構成と、現在のユーザーのユーザー構成を定義します。

RegOverridePredefKey 関数を使用すると、定義済みのレジストリ キーをレジストリ内の指定されたキーにマップできます。 たとえば、ソフトウェア インストール プログラムでは、DLL コンポーネントをインストールする前に、定義済みのキーを再マップできます。 これにより、インストール プログラムは、DLL のインストール 手順によって定義済みのキーに書き込まれる情報を簡単に調べることができます。

RegDisablePredefinedCache 関数と RegDisablePredefinedCacheEx 関数は、定義済みのレジストリ ハンドルのハンドル キャッシュを無効にします。 偽装を使用するサービスでは、定義済みのレジストリ ハンドルを使用する前 に RegDisablePredefinedCacheEx を 呼び出す必要があります。

定義済みのハンドルはスレッド セーフではありません。 1 つのスレッドで定義済みのハンドルを閉じると、ハンドルを使用している他のすべてのスレッドに影響します。