【スポンサーリンク】

[Windows] SYSTEM(レジストリハイブとレジストリエディタ

勉強メモの注意書き

この項目は、個人的に勉強した内容のメモです。詳細はオリジナルの情報を参照してください。

[Windows] SYSTEM(レジストリハイブとレジストリエディタ
  • Windowsのシステムファイル「SYSTEM」は、システム設定情報を保存するレジストリハイブの一つです。
  • レジストリハイブには、SYSTEMやSOFTWAREなどがあり、それぞれ特定の設定情報を管理しています。
  • レジストリエディタは、HKEY_LOCAL_MACHINE\SYSTEMなどの「キー」を通して対応するレジストリハイブの情報を変更しています。
[Windows] SYSTEM(レジストリハイブとレジストリエディタ

例えると、レジストリハイブは「図書館の本棚」のようなもので、それぞれの本棚(ハイブ)に特定のジャンルの本(設定情報)が分類されて保管されています。

設定アプリやコントロールパネル、レジストリエディタはその本棚の中にある本を取り出したり片付けたりするための「インターフェース」だと考えるとよいでしょう。

特典ダウンロード
【ちいラボ読者特典】印刷してすぐ使える!
\記事が役に立ったらシェアしてね/
【スポンサーリンク】

1. SYSTEMとは?(レジストリハイブ)

SYSTEMとは?(レジストリハイブ)

Windowsの復旧をしていたら、どうもレジストリが破損しているみたいで、「C:\Windows\System32\config\」にある「SYSTEM」に問題がある、ということがわかったんだよね。
このSYSTEMって、何のためのファイルなの?

C:\Windows\System32\config\」フォルダには、SYSTEMSOFTWAREなどの拡張子のない特殊なシステムファイルが保存されています。
これらは、「レジストリハイブ(registry hive)」といい、Windowsの設定データを整理して保存するための特別なファイルです。

SYSTEMハイブ」は、Windowsが動き始めるために最初に必要な情報を持っているため、特に重要です。
パソコンの起動方法やハードウェアの設定、システムサービスの情報を保存しています。

Windowsにはほかにもいくつか主要なレジストリハイブがあり、パソコンを正しく動かすための大切な情報が入っています。

  • SOFTWAREハイブ
    インストールされたプログラムの設定が保存されています。
    アプリがどのように動くかを決める情報がここに記録されています。
  • NTUSER.DATファイル
    あなたがログインしているユーザーアカウントの個人設定を保存しています。
    デスクトップの見た目や個人的な設定はここに記録されます。
  • DEFAULTハイブ
    新しいユーザーアカウントを作ったときに使われる基本設定のテンプレートです。
  • USRCLASS.DATファイル
    ファイルの関連付けなどの情報が保存されています。
ほかのレジストリハイブと関連ファイル
  • SAM
    Security Account Managerの略で、ローカルユーザーアカウント情報やパスワードハッシュを保存しています。
  • SECURITY
    ローカルセキュリティポリシーや権限設定を保存しています。
  • ELAM
    Early Launch Anti-Malwareの設定で、起動前のマルウェア検出に関する情報です。
  • COMPONENTS
    Windowsコンポーネントの設定情報で、Windows Updateや機能の有効/無効状態などを管理します。
  • DRIVERS
    デバイスドライバーの設定情報を保存しています。
  • .LOG1/.LOG2
    トランザクションログファイルで、レジストリ変更の履歴を記録します。システムクラッシュ時の復旧に使用されます。
  • RegBack – レジストリのバックアップを保存するディレクトリです。

1-1. レジストリハイブはバイナリ形式

レジストリハイブはバイナリ形式で、次のような構造になっています。

  • ハイブヘッダー
    ファイルの先頭にある身分証明書のような部分。
    このファイルが何のハイブかを識別する情報と、ファイルが壊れていないかを確認するためのデータが含まれています。
  • セル
    レジストリの中の個々のデータの単位です。
    キーや値、セキュリティ設定などの情報がセルとして保存されています。
  • トランザクションログ(またはビンログ)
    変更の履歴を記録する部分です。
    これはメモ帳のようなもので、レジストリに行われた変更を順番に記録しています。
レジストリハイブはバイナリ形式

「ハイブ(hive)」という単語は、「蜂の巣」などの意味です。
一部のハイブには暗号化されたデータが含まれていることもあります(例:SAMハイブ内のパスワードハッシュなど)。

2. レジストリの読み込みと保存のしくみ

パソコンを起動すると、Windowsはまずレジストリハイブファイルをハードディスクからメモリ(RAM)に読み込みます。
最初に、SYSTEMハイブが読み込まれ、その情報を元に他のハイブも読み込まれます。

パソコンを使っている間、プログラムはメモリに読み込まれたレジストリデータを参照して、設定を反映させます。

2-1. 「設定」の変更がレジストリの値を変える

レジストリハイブは、Windowsの設定情報が実際に保存されている物理的なファイルです。
しかし、通常は直接編集することはありません。

ユーザーが設定アプリやコントロールパネル、アプリのインストールなどで行った変更は、内部的にはレジストリの値が更新されていることがほとんどです。

例えば、以下のような設定変更がレジストリにどう反映されるかを見てみましょう:

  1. ディスプレイ設定
    設定アプリで画面解像度を変更すると、「HKEY_CURRENT_USER\Control Panel\Desktop」などのレジストリキーの値が更新されます。
  2. スタートアップ項目
    タスクマネージャーやスタートアップ設定で起動アプリを制御すると、「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run」などのキーが変更されます。
  3. ユーザーアカウント設定
    ユーザーアカウント設定を変更すると、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList」などに反映されます。

設定を変更すると、その変更内容はまず「.LOG」という拡張子を持つログファイルに記録されます。
その後、一定時間ごとや、パソコンの電源を切るときに、これらの変更がハイブファイル本体に反映されます。

「設定」の変更がレジストリの値を変える

つまり、設定アプリやコントロールパネルは、レジストリハイブの設定情報をユーザーが簡単に変更できるようにするためのグラフィカルインターフェースです。

レジストリへの依存度

アプリケーションによっては、独自の設定ファイル(XMLやJSONなど)を使用し、レジストリを使用しない場合もあります。
最近のWindowsアプリ(UWPアプリなど)は、レジストリへの依存度が低くなっている傾向があります。

2-2. レジストリエディタからレジストリハイブにアクセスする

設定アプリやコントロールパネルでは、すべてのレジストリ設定を変更できるわけではありません。
多くの高度なシステム設定や非表示の設定は、レジストリエディタ(regedit.exe)でのみ直接編集が可能です。
しかし、レジストリエディタも、直接ハイブファイルを開くのではなく、Windows APIを通じてレジストリデータにアクセスします。

レジストリエディタでは、レジストリは、論理的な階層構造(HKEY_LOCAL_MACHINE、HKEY_CURRENT_USERなど)として表示されます。
これらの主要なルートキーが、実際のハイブファイルに対応しています。

  • HKEY_LOCAL_MACHINE\SYSTEM
    → C:\Windows\System32\config\SYSTEM
  • HKEY_LOCAL_MACHINE\SOFTWARE
    → C:\Windows\System32\config\SOFTWARE
  • HKEY_CURRENT_USER
    → C:\Users[ユーザー名]\NTUSER.DAT
  • HKEY_USERS.DEFAULT
    → C:\Windows\System32\config\DEFAULT

また、ハイブファイルの破損を防ぐため、レジストリエディタで行った変更は、まずメモリ上のレジストリデータに適用されます。
その後Windowsの仕組みによってハイブファイルに書き込まれます。

2-3. 「reg」コマンドとレジストリハイブ

レジストリエディタと同様の機能は、コマンドラインからも利用できます。
それが「reg」コマンドで、これもレジストリハイブに直接アクセスするのではなく、Windowsの提供するAPIを通じて間接的にアクセスします。

主な機能:

  • reg query: レジストリの値を読み取る
  • reg add: レジストリに値を追加する
  • reg delete: レジストリから値を削除する
  • reg load: オフラインのレジストリハイブファイルをロードする
  • reg save: レジストリのブランチをファイルに保存する

システム管理者がスクリプトでレジストリ設定を自動化する際に使用され、多数のコンピュータに一貫した設定を適用するのに役立ちます。

「reg」コマンドとレジストリハイブ

特に重要なのはreg loadreg saveコマンドで、これらはオフラインのレジストリハイブファイルを操作できます。
例えば、起動できないシステムのレジストリを別のWindowsから修復する際に使用します。

3. 「BAD SYSTEM CONFIG INFO」とSYSTEMハイブの破損

レジストリハイブが壊れると、そのハイブが担当している機能に問題が生じます。
特にSYSTEMハイブが読み込めないと、Windowsが起動しなくなるなどの深刻な問題が発生します。

「BAD SYSTEM CONFIG INFO」とSYSTEMハイブの破損

起動時に「BAD SYSTEM CONFIG INFO」と表示されるのは、SYSTEMハイブがファイル破損していたり、メモリやストレージの故障でSYSTEMハイブがうまく読み込めなくなっていたりする可能性があります。

3-1. 「RegBack」とトランザクションログ

Windowsはレジストリが壊れた場合に備えて、いくつかの保護策を用意しています。
起動時にレジストリの破損が見つかると、Windowsは自動的に最後の正常なバックアップを使おうとします。

  • 自動バックアップとして、レジストリのコピーが「C:\Windows\System32\config\RegBack\」フォルダに保存されます。
  • システムの復元ポイントを作成すると、その時点のレジストリ状態も保存されます。
  • 回復の仕組みとして、トランザクションログを使って壊れたハイブを修復できることがあります。
「RegBack」とトランザクションログ

ただし、復元ポイントなどのバックアップの仕組みがオフになっていることも多いです。

3-2. configディレクトリに残るトランザクションログ

configディレクトリには、SYSTEM{〜}.TMContainer〜.regtrans-ms, SYSTEM{〜}.TMContainer〜.blf, などのトランザクションログファイルが隠しファイルで保存されていました。

  • 2025/02/25 15:06 20,709,376 SYSTEM
  • 2022/05/07 20:08 65,536 SYSTEM{〜}.TM.blf
  • 2022/05/07 20:08 524,288 SYSTEM{〜}.TMContainer00000000000000000001.regtrans-ms
  • 2022/05/07 20:08 524,288 SYSTEM{〜}.TMContainer00000000000000000002.regtrans-ms
  • SYSTEM – 関連するレジストリハイブ名
  • {〜} – 一意のトランザクションID(GUID)
  • TMContainer〜 – トランザクション管理コンテナの番号付け
  • .regtrans-ms – レジストリトランザクションファイルの拡張子

Windowsはレジストリを変更する際、変更内容をいきなりメインのレジストリハイブ(この場合はSYSTEM)に書き込むのではなく、まずこのトランザクションファイルに記録します。
システムクラッシュや予期せぬ再起動などが発生した場合でも、レジストリデータの整合性を保護するために使用されます。

通常、これらのファイルは.TM.blfファイル(Base Log File)と連携して動作します。
BLFファイルはトランザクションの管理情報を格納し、.regtrans-msファイルは実際の変更データを格納します。
ただし、.regtrans-ms.TM.blfファイルは、内部トランザクション管理用のファイルであり、直接レジストリとしてロードすることはできません。

configディレクトリに残るトランザクションログ

このようにレジストリハイブは、Windowsの心臓部とも言える重要な仕組みです。
普段は目に見えませんが、パソコンが正しく動くために欠かせない存在なのです。

configディレクトリに残るトランザクションログ

多くのレジストリハイブが同時刻に更新されている場合、システムの初期セットアップ/再インストール、Windowsの大型アップデート、セキュリティソフトのインストール/更新、それによりシステム復元ポイントの作成が行われた形跡だと考えられます。

こちらもどうぞ。
[Windows] パソコンの電源が勝手に消えている?(システム無人スリープ タイムアウト)[GPD Pocket 2]
[Windows] パソコンの電源が勝手に消えている?(システム無人スリープ タイムアウト)[GPD Pocket 2]
パソコンが勝手に切れる理由が、電源オプションのタイムアウト設定などを見てもわからない場合、「システム無人スリープ タイムアウト」が原因かもしれません。Windows 10には「システム無人スリープ タイムアウト」という隠し設定があるんですね。電源ボタンなど以外でスリープを解除した場合に、2分間 操作しないと再度スリープになってしまう仕組みです。環境Windows 10 HomeGPD Pocket 2【追記】「バッテリ駆動」と認識されることの方が本質的な原因だったかもしれませ...

Windowsの更新中に何度もメッセージが出てくるのは何の意味があるの?
Windowsの更新中に何度もメッセージが出てくるのは何の意味があるの?
Windowsの更新では、複数の段階があって処理が進みます。更新プログラムの適用には再起動が必要で、これは動作中のシステムファイルを安全に更新するためです。Windows 10以降は、統合更新プログラム(UUP)の導入により、複数の更新を1回の再起動でまとめて適用できるようになりました。なんか、睡眠中に夢を見たり、REM睡眠があったりするのに似ているね。Windows Updateが時間がかかるのは、、システムが壊れないようにバックアップしたり、このタイミングでマルウェアが深...

Windows11のログイン時の表示名がフルネームなのが嫌(Microsoftアカウント)
Windows11のログイン時の表示名がフルネームなのが嫌(Microsoftアカウント)
Windows 11のMicrosoftアカウントで初期設定すると、ログイン時やOneDriveの同期フォルダ名に自動的にフルネームが表示されるのが気になります。これらの表示名を変更するには、Microsoftアカウントの管理ページで名前を変更するか、レジストリを編集する方法があります。ただし、表示名を実名以外にすると、相手からの認識や本人確認が難しくなる可能性があるので、注意が必要ですね。レジストリキーのメモ「HKEY_CLASSES_ROOT\CLSID\{018D5C6...
QRコードを読み込むと、関連記事を確認できます。

[Windows] SYSTEM(レジストリハイブとレジストリエディタ
【スポンサーリンク】
タイトルとURLをコピーしました