- Windowsのシステムファイル「SYSTEM」は、システム設定情報を保存するレジストリハイブの一つです。
- レジストリハイブには、SYSTEMやSOFTWAREなどがあり、それぞれ特定の設定情報を管理しています。
- レジストリエディタは、HKEY_LOCAL_MACHINE\SYSTEMなどの「キー」を通して対応するレジストリハイブの情報を変更しています。
![[Windows] SYSTEM(レジストリハイブとレジストリエディタ](https://chiilabo.com/wp-content/uploads/2020/09/instructor-m.png)
例えると、レジストリハイブは「図書館の本棚」のようなもので、それぞれの本棚(ハイブ)に特定のジャンルの本(設定情報)が分類されて保管されています。
設定アプリやコントロールパネル、レジストリエディタはその本棚の中にある本を取り出したり片付けたりするための「インターフェース」だと考えるとよいでしょう。
1. SYSTEMとは?(レジストリハイブ)

Windowsの復旧をしていたら、どうもレジストリが破損しているみたいで、「C:\Windows\System32\config\」にある「SYSTEM」に問題がある、ということがわかったんだよね。
このSYSTEMって、何のためのファイルなの?
「C:\Windows\System32\config\
」フォルダには、SYSTEM、SOFTWAREなどの拡張子のない特殊なシステムファイルが保存されています。
これらは、「レジストリハイブ(registry hive)」といい、Windowsの設定データを整理して保存するための特別なファイルです。
「SYSTEMハイブ」は、Windowsが動き始めるために最初に必要な情報を持っているため、特に重要です。
パソコンの起動方法やハードウェアの設定、システムサービスの情報を保存しています。
Windowsにはほかにもいくつか主要なレジストリハイブがあり、パソコンを正しく動かすための大切な情報が入っています。
- SOFTWAREハイブ
インストールされたプログラムの設定が保存されています。
アプリがどのように動くかを決める情報がここに記録されています。 - NTUSER.DATファイル
あなたがログインしているユーザーアカウントの個人設定を保存しています。
デスクトップの見た目や個人的な設定はここに記録されます。 - DEFAULTハイブ
新しいユーザーアカウントを作ったときに使われる基本設定のテンプレートです。 - USRCLASS.DATファイル
ファイルの関連付けなどの情報が保存されています。
1-1. レジストリハイブはバイナリ形式
レジストリハイブはバイナリ形式で、次のような構造になっています。
- ハイブヘッダー
ファイルの先頭にある身分証明書のような部分。
このファイルが何のハイブかを識別する情報と、ファイルが壊れていないかを確認するためのデータが含まれています。 - セル
レジストリの中の個々のデータの単位です。
キーや値、セキュリティ設定などの情報がセルとして保存されています。 - トランザクションログ(またはビンログ)
変更の履歴を記録する部分です。
これはメモ帳のようなもので、レジストリに行われた変更を順番に記録しています。

「ハイブ(hive)」という単語は、「蜂の巣」などの意味です。
一部のハイブには暗号化されたデータが含まれていることもあります(例:SAMハイブ内のパスワードハッシュなど)。
2. レジストリの読み込みと保存のしくみ
パソコンを起動すると、Windowsはまずレジストリハイブファイルをハードディスクからメモリ(RAM)に読み込みます。
最初に、SYSTEMハイブが読み込まれ、その情報を元に他のハイブも読み込まれます。
パソコンを使っている間、プログラムはメモリに読み込まれたレジストリデータを参照して、設定を反映させます。
2-1. 「設定」の変更がレジストリの値を変える
レジストリハイブは、Windowsの設定情報が実際に保存されている物理的なファイルです。
しかし、通常は直接編集することはありません。
ユーザーが設定アプリやコントロールパネル、アプリのインストールなどで行った変更は、内部的にはレジストリの値が更新されていることがほとんどです。
例えば、以下のような設定変更がレジストリにどう反映されるかを見てみましょう:
- ディスプレイ設定:
設定アプリで画面解像度を変更すると、「HKEY_CURRENT_USER\Control Panel\Desktop」などのレジストリキーの値が更新されます。 - スタートアップ項目:
タスクマネージャーやスタートアップ設定で起動アプリを制御すると、「HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run」などのキーが変更されます。 - ユーザーアカウント設定:
ユーザーアカウント設定を変更すると、「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 load
とreg save
コマンドで、これらはオフラインのレジストリハイブファイルを操作できます。
例えば、起動できないシステムのレジストリを別のWindowsから修復する際に使用します。
3. 「BAD SYSTEM CONFIG INFO」とSYSTEMハイブの破損
レジストリハイブが壊れると、そのハイブが担当している機能に問題が生じます。
特にSYSTEMハイブが読み込めないと、Windowsが起動しなくなるなどの深刻な問題が発生します。

起動時に「BAD SYSTEM CONFIG INFO」と表示されるのは、SYSTEMハイブがファイル破損していたり、メモリやストレージの故障でSYSTEMハイブがうまく読み込めなくなっていたりする可能性があります。
3-1. 「RegBack」とトランザクションログ
Windowsはレジストリが壊れた場合に備えて、いくつかの保護策を用意しています。
起動時にレジストリの破損が見つかると、Windowsは自動的に最後の正常なバックアップを使おうとします。
- 自動バックアップとして、レジストリのコピーが「C:\Windows\System32\config\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
ファイルは、内部トランザクション管理用のファイルであり、直接レジストリとしてロードすることはできません。

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

多くのレジストリハイブが同時刻に更新されている場合、システムの初期セットアップ/再インストール、Windowsの大型アップデート、セキュリティソフトのインストール/更新、それによりシステム復元ポイントの作成が行われた形跡だと考えられます。
![[Windows] パソコンの電源が勝手に消えている?(システム無人スリープ タイムアウト)[GPD Pocket 2]](https://chiilabo.com/wp-content/uploads/2023/06/image-9-20-320x198.jpg)

