HKEY_USERSとは?Windowsレジストリのユーザー設定ハイブをわかりやすく解説

Windows

Windowsのレジストリを開くと、HKEY_USERS という名前のルートキーが並んでいます。
中を見ると S-1-5-21-... といった長い数字の羅列が並んでいて、「これは何だろう?」と思ったことはありませんか?
HKEY_USERSは、現在ログイン中のユーザーアカウントの設定ハイブをロードして管理するルートキーです。
この記事では、HKEY_USERSの役割・内部構造・HKEY_CURRENT_USERとの関係・実際の活用場面をわかりやすく解説します。


スポンサーリンク

HKEY_USERSとは

HKEY_USERS(略称:HKU)は、Windowsのレジストリエディター(regedit)に表示される5つのルートキーのひとつです(技術的にはAPIレベルでさらに多くの定義済みキーが存在しますが、実用上は5つが基本となります)。
現在ログイン中のユーザーアカウントの設定ハイブをロードして管理します。ログアウト中のユーザーの設定データはディスク上のNTUSER.DATに保存されていますが、HKUにはロードされません。

WindowsのレジストリHKEY_LOCAL_MACHINE(HKLM)と HKEY_USERS(HKU)という2つの「マスターキー」を中心に成り立っています。
その他の3つのルートキーはこの2つをベースにしていますが、それぞれ性質が異なります。HKEY_CURRENT_USER は HKU の現在ユーザーSIDへのリンク、HKEY_CURRENT_CONFIG は HKLM の特定サブキーへのリンクです。HKEY_CLASSES_ROOT(HKCR)はやや特殊で、HKLM\Software\Classes と HKCU\Software\Classes の情報を統合した仮想ビューです(2つのキーをマージして表示するため、単純なエイリアスとは異なります)。
つまり HKU と HKLM の2つさえ理解すれば、レジストリの全体像が見えてきます。

格納されている情報

HKEY_USERS には、現在ログイン中のユーザーごとに以下のような設定がロードされています。

  • デスクトップの壁紙・テーマ・アイコン配置
  • スタートメニューやタスクバーの設定
  • インストール済みアプリのユーザー別設定
  • ネットワークドライブのマッピング情報
  • プリンターの設定
  • 環境変数(ユーザースコープのもの)
  • ファイルの関連付け(ユーザー固有)

HKEY_USERSの内部構造

レジストリエディターHKEY_USERS を展開すると、複数のサブキーが表示されます。

HKEY_USERS
  ├─ .DEFAULT
  ├─ S-1-5-18
  ├─ S-1-5-19
  ├─ S-1-5-20
  ├─ S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-1001         ← ログイン中の一般ユーザー
  └─ S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-1001_Classes ← 同ユーザーのクラス設定

重要な点として、ここに表示されるのは現在ログイン中のユーザーのサブキーのみです。
ログアウト中のユーザーのSIDサブキーは表示されません(管理者が手動でNTUSER.DATをロードした場合を除く)。

それぞれの意味を順番に説明します。

.DEFAULT

ユーザーがまだログインしていない状態、つまりログイン画面を表示しているときに使われる設定です。
デスクトップを表示する前の段階でWindowsが参照するキーで、「新規ユーザーのデフォルトプロファイル」とは別物です。

特殊なシステムアカウントのSID

S-1-5-18S-1-5-19S-1-5-20 の3つは、Windowsシステムが内部処理のために使う特殊なアカウントに対応しています。

SIDアカウント名説明
S-1-5-18Local Systemシステム本体が使う最高権限のアカウント
S-1-5-19Local Serviceローカルサービス用の制限付きアカウント
S-1-5-20Network Serviceネットワークサービス用アカウント

通常の操作でこれらを編集する必要はありません。

一般ユーザーのSIDサブキー

S-1-5-21- から始まる長い文字列が一般ユーザーのSID(セキュリティ識別子)です。
現在ログイン中の各ユーザーアカウントごとに1つ作られます。ログアウト中のユーザーのサブキーは、管理者が手動でNTUSER.DATをロードしない限りHKUには表示されません。

SIDとは、Windowsがユーザーを一意に識別するための番号です。
ユーザー名は後から変更できますが、SIDは作成後に変わりません。

末尾が _Classes のサブキーには、そのユーザー固有のファイル関連付けやCOMクラス情報が入っています。
これは HKEY_CLASSES_ROOT の構成要素のひとつになっています(HKCU\Software\Classes として参照されます)。


HKEY_CURRENT_USERとの関係

HKEY_CURRENT_USER(HKCU)は、現在ログイン中のユーザーのSIDサブキーへのリンク(シンボリックリンク)です。

HKEY_CURRENT_USER
  ↓ 実体は
HKEY_USERS\S-1-5-21-XXXXXXXXXX-...-1001

HKCUとHKU\SIDは同一のハイブデータを指しています。つまり HKCU で設定を変更すると、HKU 内の該当SIDの内容も同時に変わります(同じメモリ上のデータを別名で参照しているためです)。

ログイン・ログアウト時の動作

タイミング動作
ログイン時HKU の該当SIDサブキー(NTUSER.DAT)がメモリに読み込まれ、HKCU としてマウントされる
使用中HKCU への変更は HKU の該当SIDにリアルタイムで反映される(同一データのため)
ログアウト時HKU の該当SIDハイブがディスク(NTUSER.DAT)に保存され、アンロードされる

この仕組みのおかげで、複数のユーザーが1台のPCを共有していても、ログインするたびにそれぞれの個人設定が正確に読み込まれます。


ファイルの実体:NTUSER.DAT

HKEY_USERS の各SIDサブキーは、ディスク上のファイルとして保存されています。
そのファイルが NTUSER.DAT です。

各ユーザーのプロファイルフォルダ(通常 C:\Users\ユーザー名\)直下に置かれており、通常は隠しファイルになっています。

C:\Users\ユーザー名\NTUSER.DAT           ← HKU\SID の実体
C:\Users\ユーザー名\AppData\Local\Microsoft\Windows\UsrClass.dat
                                          ← HKU\SID_Classes の実体

このファイルはバイナリ形式のため、テキストエディターでは開けません。
regedit や regファイルを使った操作を通じて読み書きします。

ログアウト中のユーザーの設定を確認・編集したい場合も、このNTUSER.DATを手動でロードする方法を使います(後述)。


HKEY_USERSの主なサブキー構造

各ユーザーのSIDキー配下には、設定の種類ごとにサブキーが並んでいます。
よく参照・編集されるものを以下にまとめます。

サブキーパス格納内容
\Software\Microsoft\Windows\CurrentVersion\Explorerエクスプローラーの表示設定、最近使ったファイルなど
\Software\Microsoft\Windows\CurrentVersion\Runユーザーログイン時に自動起動するプログラム
\Software\Policiesグループポリシーによるユーザー向け制限設定
\Control Panel\Desktop壁紙・スクリーンセーバー・フォントサイズなど
\Environmentユーザー固有の環境変数(PATH など)
\Software\Classesユーザー固有のファイル関連付け(HKCRの構成要素)

HKEY_USERSが使われる実践的な場面

ログイン中の別ユーザーの設定を管理者が変更する

複数ユーザーが同時ログインしている環境(Windowsのファストユーザー切り替えなど)では、HKU 配下に複数のSIDサブキーが並びます。
その場合、対象ユーザーのSIDサブキーを直接 HKU から編集できます。
変更内容は対象ユーザーが次回ログインしたとき(またはログイン中であれば即時)に反映されます。

ログアウト中のユーザーのレジストリを編集する

ログアウト中のユーザーのサブキーはHKUに表示されませんが、NTUSER.DATを手動でロードすることで編集できます。

# 別ユーザーのNTUSER.DATをHKUにロードする
reg load HKU\TempUser "C:\Users\別ユーザー名\NTUSER.DAT"

# 設定を変更する(例:スタートアップに登録)
New-Item -Path "Registry::HKEY_USERS\TempUser\Software\MyApp"

# 編集が終わったらアンロードする(必須)
[gc]::Collect()
reg unload HKU\TempUser

アンロードを忘れるとファイルがロックされたままになるため、必ず忘れずに実行してください。

全ユーザーに同じ設定を一括適用する

企業の管理者が全社員のPCに同じ設定を配布したいときは、HKU 配下の各SIDサブキーに同じ値を書き込むスクリプトを実行します。
ただし、HKUに表示されているのはログイン中のユーザーのみです。ログアウト中のユーザーには、NTUSER.DATを個別にロードして書き込む処理が別途必要になります。
スクリプトの中では .DEFAULTS-1-5-18S-1-5-19S-1-5-20_Classes を除外し、実際のユーザーアカウントのSIDだけに書き込むのが定石です。


HKEY_USERSを確認・編集するときの注意点

レジストリの編集は慎重に行う必要があります。
レジストリのバックアップと復元を必ず実施してから作業してください。

また、HKU を編集する際は以下の点に注意してください。

編集前に対象ユーザーがログアウトしていることを確認する。
ログイン中のユーザーのキーをHKUから直接編集すると、セッション終了時に予期しない上書きが発生する場合があります。

SIDを正確に確認してから編集する。
誤ったSIDのキーを編集すると別ユーザーの設定を壊す可能性があります。
自分のSIDは以下のコマンドで確認できます。

# 自分のSIDを確認するコマンド
whoami /user

システムアカウント(S-1-5-18 など)のキーは原則変更しない。
Windowsのシステム動作に直結するため、誤って変更するとシステムが不安定になることがあります。

レジストリの主要キー一覧も参照すると、全体像の把握に役立ちます。


まとめ

HKEY_USERS は、現在ログイン中のユーザーの設定ハイブをロードして管理するレジストリのルートキーです。
重要なポイントを以下にまとめます。

  • 現在ログイン中のユーザーの設定ハイブをロードして管理する。ログアウト中のユーザーのサブキーはHKUには現れない(NTUSER.DATをロードしない限り)
  • HKEY_CURRENT_USER(HKCU)は HKU の該当SIDへのリンク。ログイン時にNTUSER.DATがメモリにロードされ、ログアウト時にディスクへ保存されてアンロードされる
  • ファイルの実体は NTUSER.DATC:\Users\ユーザー名\ に存在)
  • .DEFAULT はログイン画面用の設定。S-1-5-18/19/20 はシステムアカウント用
  • 編集時は必ずバックアップを取り、SIDを正確に確認してから行う

参考情報源:

コメント

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