Windowsレジストリとは?設定データベースの仕組みと構造をわかりやすく解説

Windowsが起動するとき、アプリをインストールするとき、画面の色を変えるとき——これらすべての裏側で静かに動いているのが「レジストリ」です。
レジストリはWindowsの設定情報をまるごと管理する”中枢データベース”ともいえる仕組みです。
名前は聞いたことがあっても「何がどこにどう保存されているのか」がわからない方向けに、構造から実体ファイルまで体系的に解説します。


スポンサーリンク

レジストリ(Registry)とは

レジストリ(英語: Windows Registry)とは、Windows OSが動作するために必要な設定情報を一元管理する階層型データベースです(Microsoft Learn「レジストリの構造」)。

OS本体の動作設定だけでなく、インストール済みのアプリケーション、接続しているハードウェアの構成、ユーザーごとの環境設定まで、あらゆる設定情報が集約されています。
Windowsが起動している間、OSは常にレジストリを参照しながら動作しており、ウィンドウの位置1つ変えただけでもレジストリへの書き込みが発生します。

INIファイルからレジストリへ

Windows 3.1以前は、設定情報を「INIファイル」と呼ばれるテキストファイルに分散保存していました。
しかしシステムが大規模化するにつれ、「どこに何を書いたかわからない」「パフォーマンスが悪い」という問題が深刻化しました。
そこで Windows 95 および Windows NT から、設定情報をAPIを介して一元管理するレジストリが主流となりました(Wikipedia「Windows レジストリ」)。

レジストリの主なメリットは次のとおりです。

  • 高速アクセス:常にメモリに読み込まれており、ファイルI/Oが不要
  • 整合性の確保:設定が分散せず一箇所で管理される
  • 型付きデータ:文字列・整数・バイナリなどデータ型があらかじめ定義されている
  • セキュリティ制御:ACL(アクセス制御リスト)でキー単位のアクセス制限が可能

レジストリの基本構造:キー・サブキー・値

レジストリのデータは、ツリー構造(階層型)で管理されます。
構成要素は大きく3種類です。

要素役割ファイルシステムに例えると
キー(Key)設定情報を格納する入れ物フォルダ
サブキー(Subkey)キーの下に配置されるキーサブフォルダ
値(Value)キー内に保存される実際の設定データファイル

キーを参照するときは、ファイルパスに似た記法を使います。
たとえば HKEY_LOCAL_MACHINE\Software\Microsoft\Windows は、HKEY_LOCAL_MACHINE というルートキーの下の Software → Microsoft → Windows というキーを指します。

レジストリのツリーは最大512階層まで深くできますが、実際の設定は数段階で収まるものがほとんどです(Microsoft Learn「レジストリの構造」)。

値のデータ型

1つの「値」は「名前」「データ型」「データ」の3点セットで構成されます。
代表的なデータ型は以下の5種類です。

データ型内容
REG_SZ人間が読めるテキスト文字列
REG_BINARYバイナリ形式の生データ(ハードウェア情報などに多用)
REG_DWORD32ビットの整数値
REG_EXPAND_SZ%SYSTEMROOT% などの環境変数を含む展開可能な文字列
REG_MULTI_SZ複数の文字列をまとめて格納するリスト型

5つのルートキー(ハイブ)の役割

レジストリの最上位には「ルートキー」と呼ばれる5つのキーがあります。
これらはハイブ(hive)とも呼ばれ、それぞれが異なる種類の設定を管理しています。

HKEY_LOCAL_MACHINE(HKLM)

コンピューター全体に共通する設定を格納します。
インストール済みのソフトウェア、ハードウェアの構成、システムの起動設定などが含まれます。
どのユーザーがログオンしていても同じ情報が参照されるため、管理者権限でないと変更できないキーが多く存在します。

主なサブキーは次のとおりです。

  • SOFTWARE:インストール済みアプリの設定
  • SYSTEM:ドライバや起動設定など
  • HARDWARE:ブート時に動的に生成されるハードウェア情報(ディスクには保存されない揮発性データ)
  • SAM:ローカルアカウントのセキュリティデータ
  • SECURITY:セキュリティポリシーの設定

HKEY_CURRENT_USER(HKCU)

現在ログオンしているユーザー固有の設定を格納します。
デスクトップの壁紙、フォントの設定、アプリごとのユーザー設定などが保存されています。
実体は HKEY_USERS の中にある該当ユーザーのサブキーへのリンク(ショートカット)です。

HKEY_CLASSES_ROOT(HKCR)

ファイルの拡張子とアプリケーションの関連付け、およびCOMオブジェクトの登録情報を格納します。
.txt ファイルをメモ帳で開く、.jpg ファイルをフォトで開く、という動作はこのキーの設定に基づいています。
HKCU\Software\ClassesHKLM\Software\Classes を合成した仮想的なビューとして表示されており、同じキーが両方に存在する場合はユーザー側(HKCU)の設定が優先されますMicrosoft Learn「HKEY_CLASSES_ROOT キー」)。

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ の役割と構造

HKLM\SOFTWARE\Classes は、コンピューターのすべてのユーザーに共通するクラス登録情報を格納するキーです(Microsoft Learn「HKEY_LOCAL_MACHINE\SOFTWARE\Classes」)。
アプリをインストールするとこのキー配下にサブキーが作成され、「どの拡張子をどのアプリで開くか」「COMオブジェクトのクラスIDは何か」といった情報がシステム全体のデフォルト設定として書き込まれます。

レジストリエディタで HKCR を開いたときに見える内容は、このキーの情報と HKCU\Software\Classes の情報をWindowsが動的に合成した結果です。
実体の格納場所は HKLM\SOFTWARE ハイブファイルであり、%SystemRoot%\System32\Config\SOFTWARE に保存されます。

HKCR への書き込みとの関係

HKEY_CLASSES_ROOT に直接キーや値を書き込むと、システムは自動的に HKLM\SOFTWARE\Classes 側に保存します。
ただし、書き込もうとしたキーがすでに HKCU\Software\Classes に存在する場合は、そちらに保存されます。
つまり「HKCR は読み取り用の合成ビューであり、書き込みの実体は HKLM か HKCU のどちらかに分かれる」という仕組みです。

操作書き込み先
HKCRに書き込む(該当キーがHKCUに存在しない場合)HKLM\SOFTWARE\Classes
HKCRに書き込む(該当キーがHKCUにすでに存在する場合)HKCU\Software\Classes
既定の設定を変更したい場合の推奨先HKLM\SOFTWARE\Classes を直接指定
ユーザー固有の設定を変更したい場合の推奨先HKCU\Software\Classes を直接指定

主なサブキーの種類

HKLM\SOFTWARE\Classes の直下には、大きく3種類のサブキーが並んでいます。

  1. 拡張子キー(.txt.jpg など):先頭がドット(.)で始まるキーで、ファイル拡張子とProgIDの関連付けを定義します
  2. ProgIDキー(txtfilejpegfile など):拡張子に対応するアプリケーションの動作(開く・印刷・アイコンなど)を定義するキーです
  3. COMクラス関連キー(CLSIDAppIDInterfaceTypeLib など):COMオブジェクトの識別子(CLSID)やアプリケーションID(AppID)、インターフェース情報などを格納するキーです

拡張子キーとProgIDキーの関係を例で示すと次のようになります。

HKLM\SOFTWARE\Classes\.txt
  └─ (既定) = "txtfile"       ← .txtはtxtfileというProgIDに対応する

HKLM\SOFTWARE\Classes\txtfile
  └─ shell\open\command
       └─ (既定) = "notepad.exe %1"  ← txtfileを「開く」操作はメモ帳で実行

サービスやシステムプロセスでの注意点

サービスプログラムなど、ログオン中のユーザーとは異なるセキュリティコンテキストで動作するプロセスは、HKEY_CLASSES_ROOT を直接使用しないことが推奨されています。
代わりに HKLM\SOFTWARE\Classes を明示的に開いてシステム共通のデフォルト設定にアクセスするか、RegOpenUserClassesRoot 関数を使って特定ユーザーのクラス情報をマージした状態で取得します(Microsoft Learn「HKEY_CLASSES_ROOT キー」)。

HKEY_USERS(HKU)

コンピューターに存在するすべてのユーザーのプロファイル情報を格納します。
現在アクティブなユーザーのサブキーが読み込まれており、HKEY_CURRENT_USER はここへのリンクです。
.DEFAULT というサブキーには、新規ユーザー作成時の標準設定が格納されています。

HKEY_CURRENT_CONFIG(HKCC)

起動時に使用しているハードウェアプロファイルの情報を格納します。
HKEY_LOCAL_MACHINE 内のデータから動的に生成される仮想的なビューで、直接編集する機会はほとんどありません。


ハイブファイルの実体

レジストリのデータは、ディスク上のハイブファイルとして保存されています。
%SystemRoot%\System32\Config フォルダにある拡張子なしのファイルがその実体です(Microsoft Learn「Registry Hives」)。

ファイル名対応するキー
SYSTEMHKLM\SYSTEM
SOFTWAREHKLM\SOFTWARE
SAMHKLM\SAM
SECURITYHKLM\SECURITY
NTUSER.DATHKCU(各ユーザーのプロファイルフォルダ内)

HKLM\HARDWARE はメモリ上にのみ存在する揮発性のキーで、ディスクには保存されません。
Windowsが起動するたびに自動生成されます。

各ハイブファイルには対応する .LOG ファイルがあり、変更内容のトランザクションログとして機能します。
これによりシステムクラッシュが起きても設定の一貫性を保てるようになっています。


レジストリエディタ(regedit.exe)

レジストリの内容を閲覧・編集するための公式ツールがレジストリエディタ(regedit.exe)です。
Win + R キーを押して regedit と入力すると起動できます。

左ペインにはフォルダ構造でキーが表示され、右ペインには選択したキー内の値と型・データが表示されます。
この見た目はWindowsのエクスプローラーとよく似ており、直感的に操作できます。

レジストリを直接編集する前には、必ずバックアップを取ることが原則です。
誤った変更はOSが起動しなくなるリスクがあります。
バックアップは「ファイル」→「エクスポート」から .reg ファイルとして保存できます。


レジストリクリーナーに関する注意

「レジストリを掃除するとPCが速くなる」という情報を見かけることがありますが、実態は慎重に考える必要があります。
不要なレジストリエントリはそもそも参照されないため、パフォーマンスへの影響は極めて小さいとされています。
むしろレジストリクリーナーが誤って必要なエントリを削除した場合、アプリが起動しなくなるなどの実害が発生します。
Windowsに不具合がある状態でクリーナーを使用するのは、状況を悪化させる恐れがあるため避けるべきです。


まとめ

Windowsレジストリは、OS・アプリ・ハードウェアのあらゆる設定情報を階層型データベースとして一元管理する仕組みです。
5つのルートキー(HKLM・HKCU・HKCR・HKU・HKCC)がそれぞれ異なるスコープの設定を担い、ディスク上のハイブファイルとして実体が保存されます。
日常的なPC操作でレジストリを直接編集する機会はほとんどありませんが、構造を知っておくことでトラブル対応やカスタマイズの理解が深まります。
直接編集が必要な場合は、必ずバックアップを取ってから慎重に行うことを忘れずに。


参考情報源:

コメント

タイトルとURLをコピーしました