Windows/レジストリ

Last-modified: 2021-05-26 (水) 12:24:40

レジストリとは?

マイクロソフトの用語集によると、レジストリは以下のように記載してあります。

A database repository for information about a computer's configuration. The registry contains information that Windows continually references during operation, such as: profiles for each user; the programs installed on the computer and the types of documents that each can create; property settings for folders and program icons; what hardware exists on the system; which ports are being used. The registry is organized hierarchically as a tree, and it is made up of keys and their subkeys, hives, and entries.
コンピューターの構成に関する情報のデータベースリポジトリ。レジストリには、Windowsが操作中に継続的に参照する次のような情報が含まれています。各ユーザーのプロファイル。コンピュータにインストールされているプログラムと、それぞれが作成できるドキュメントの種類。フォルダとプログラムアイコンのプロパティ設定。システムに存在するハードウェア。どのポートが使用されているか。レジストリはツリーとして階層的に編成されており、キーとそのサブキー、ハイブ、およびエントリで構成されています。

なんだか難しく見えますが、ざっくばらんに言ってしまうと、Windowsというシステムを動かすのに必要なデータベースの事です。

最初に言っておくと、よく知らないでレジストリを弄るとWindowsの動作がおかしくなったり、最悪システムデータが連鎖的に破損するので厳に注意が必要です。

レジストリの構造

レジストリは以下の要素からなっていますが、基本的には「キー」と「値」の2つの基本要素からなっています。

1ルートキーレジストリは大きく分けて5つにグルーピングされます。このグループの大元の事をルートキーと呼びます。これはシステムで使用される定義済みのキーです。
2サブキールートキー配下のキーをサブキーと呼びます。
3キー目的としているレジストリが入っている項目をキーと呼びます。
4値の名前レジストリの値の名前です。
5値の種類レジストリの値にはデータの型があります。
6値のデータレジストリの値に実際に入っているデータです。
7ハイブレジストリの実体はdatやlogなどの拡張子のデータです。このデータの事をハイブと言います。※正確には違います。

例えば以下のレジストリでは

\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Search\SearchboxTaskbarMode
ルートキーHKEY_CURRENT_USER
サブキーSoftware\Microsoft\Windows\CurrentVersion\Search
キーSearch
値の名前SearchboxTaskbarMode
値の種類REG_DWORD
値のデータ0

になります。
画面

ルートキー

ルートキーは以下の5つがあり、それぞれどんな内容の情報を格納するかで分けられています。。ルートキーはそれぞれ短縮形表示があり、コマンドでレジストリを操作する場合は短縮形の表示でも有効であったりします。

ルートキー短縮形表示簡単な説明
HKEY_CLASSES_ROOTHKCRHKLM\Softwareのサブキー。
HKEY_CURRENT_USERHKCU現在ログオンしているユーザのプロファイル情報など。
HKEY_LOCAL_MACHINEHKLMハード、デバイスなどに関係した情報など
HKEY_USERSHKUログオンしたすべてのユーザののプロファイル情報と規定のプロファイル情報がある。
HKEY_CURRENT_CONFIGHKCCOS起動時に読み込まれるハードウェアのプロファイルなど

レジストリで変更できるもの

レジストリで変更できるものは、レジストリの数だけあるので色々あります。以下は一例です。

  • 各ユーザーのプロファイル
  • 既定のプログラムとファイルの関連付け
  • フォルダとプログラムアイコンのプロパティ設定
  • システムに存在するハードウェア情報
  • どのポートが使用されているか。

レジストリの編集方法

試しにレジストリを一つ変更してみます。

  • Windows + [R]で「ファイル名を指定して実行」を開きます。
    画面
  • 「regedit」と入力して「Enter」を押下します。これでレジストリエディタが開きます。
    画面

レジストリの編集手段

レジストリはいくつかの方法で編集する事ができます。
・レジストリエディタ(regedit.exe)を使う。
・コンソールエディタ(reg.exe)を使う。
・グループポリシーエディタを使う。
・Wshを使う。
・WMIを使う。

ハイブ(hive)について

※書きかけ
最後にハイブの説明です。通常はハイブについて触る事はないかもしれません。
ハイブは、OSの起動時またはユーザーのログイン時などに、メモリにロードされるレジストリ(と値)です。
ハイブは「キー」、「サブキー」、「値」からなるグループであり、「ntuser.dat」などの実データからなります。
この実データの事をハイブファイルと読んだり、省略してハイブと言ったりします。
ハイブファイルは大体以下のフォルダに格納されています。

C:\Windows\System32\config

ハイブは、ソフトウェア情報、ハード情報、SAM情報などの種類ごとに分けられています。

以下はMicrosoftの文書に記載のある、レジストリのハイブと、それに対応したファイルです。

レジストリハイブハイブファイル
HKEY_CURRENT_CONFIGSystem
HKEY_CURRENT_USERNtuser.dat
HKEY_LOCAL_MACHINE\SAMSam
HKEY_LOCAL_MACHINE\SecuritySecurity
HKEY_LOCAL_MACHINE\SoftwareSoftware
HKEY_LOCAL_MACHINE\SystemSystem
HKEY_USERS\.DEFAULTDefault

ハイブファイルの形式について

ハイブファイルには、本体、バックアップ、ログの三種類があります。
ただし、「HKEY_LOCAL_MACHINE\Systemハイブのバックアップ」のみ専用の拡張子があります。
また、ntuser.datのdatは拡張子の扱いではないため、「ntuser.dat.log」などの表記になります。

拡張子説明
なし本体
.altHKEY_LOCAL_MACHINE\Systemハイブのバックアップ
.logハイブ変更のログファイル
.savハイブのバックアップ

参考