HKEY_CURRENT_USER(HKCU)とは?格納内容・主要サブキー・HKLMとの違いを解説

Windowsのレジストリエディターを開くと、最上位に「HKEY_CURRENT_USER」というキーがあります。
「なんとなく自分の設定が入っている場所」とはわかっても、具体的に何が格納されているのか、どんな役割を持っているのかは意外と知られていません。
この記事では、HKEY_CURRENT_USERの意味・格納内容・主要サブキー・HKLMとの違いをわかりやすく解説します。


スポンサーリンク

HKEY_CURRENT_USERとは

HKEY_CURRENT_USERとは、Windowsレジストリの5つのルートキーのうちのひとつで、現在ログインしているユーザー専用の設定を格納するキーです。
略称は「HKCU」と表記されます。

デスクトップの背景色、アプリの表示設定、キーボードレイアウトなど、「このPCを使うAさんにとっての設定」がまとまっている場所です。
同じPCに複数のユーザーアカウントがあっても、それぞれが自分だけのHKEY_CURRENT_USERを持つため、設定が混ざることはありません。


HKEY_USERSとの関係:実態はシンボリックリンク

HKEY_CURRENT_USERは独立したデータを持つキーではなく、HKEY_USERSのサブキーへのシンボリックリンク(参照先の別名)です(Microsoft Learn「上級ユーザー向けの Windows レジストリ」より)。

具体的には次のような構造になっています。

HKEY_USERS
  └─ S-1-5-21-XXXX-XXXX-XXXX-1001   ← ユーザーAのSID
  └─ S-1-5-21-XXXX-XXXX-XXXX-1002   ← ユーザーBのSID
  └─ .DEFAULT                         ← 既定のプロファイル

HKEY_CURRENT_USER   ← 上記SIDのいずれかを指す別名

SID(Security Identifier)とは、Windowsがユーザーを識別するために割り当てる一意のIDのことです。
ユーザーAでログインしているとき、HKEY_CURRENT_USERは「HKEY_USERS\ユーザーAのSID」と同じ場所を指しています。

ログイン・ログオフ時の動作

ユーザーがWindowsにサインインすると、次の手順が実行されます(なーたのおぼえがき「レジストリ① HKEY_USERSとHKEY_CURRENT_USER」より)。

  1. HKEY_USERSから該当ユーザーのSIDに対応するサブキーを読み込む
  2. その内容をHKEY_CURRENT_USERにコピーしてセットアップする
  3. ログイン中はHKEY_CURRENT_USERだけを参照・変更する
  4. サインアウト時にHKEY_CURRENT_USERの変更内容をHKEY_USERSの該当SIDキーに書き戻す

つまり、HKCUに対して行った変更は、次回サインイン時にも引き継がれる仕組みになっています。


ハイブファイルの保存場所

HKEYの設定は、PCの電源が切れても消えないようにディスク上のファイルに保存されています。
このファイルを「ハイブファイル」と呼びます。

HKEY_CURRENT_USERに対応するハイブファイルは、他のルートキーとは別の場所に保存されます(Microsoft Learn「上級ユーザー向けの Windows レジストリ」より)。

ファイル名場所
NTUSER.DATC:\Users\ユーザー名\
UsrClass.datC:\Users\ユーザー名\AppData\Local\Microsoft\Windows\

NTUSER.DATがHKCU本体の設定を、UsrClass.datがHKCU\Software\Classesの設定(ファイルの関連付けなど)をそれぞれ保管しています。
これらのファイルは「隠しファイル」属性のため、通常のエクスプローラー表示では見えません。


HKEY_CURRENT_USERの主要サブキー

HKCUの直下には、用途ごとに分類された複数のサブキーが存在します。
代表的なものを以下にまとめます(Microsoft PowerShell公式ドキュメントおよびQiita「Windowsのレジストリについての概要」より)。

サブキー主な格納内容
AppEventsシステムサウンドの設定(通知音・エラー音など)
Consoleコマンドプロンプト・PowerShellのウィンドウ設定
Control Panelデスクトップ、マウス、キーボード、アクセシビリティの設定
Environmentユーザー固有の環境変数(%USERPROFILE%など)
Keyboard Layoutキーボードレイアウトの設定
Networkマップされたネットワークドライブの設定
Printersユーザーごとのプリンター設定
Softwareインストール済みアプリのユーザー固有設定
Volatile Environmentログオンセッション中のみ有効な環境変数(%USERNAME%など)

Software サブキーについて

HKCU\Software は特に重要なサブキーです。
アプリケーションがユーザーごとの設定を保存する際、このキーの下に独自のサブキーを作成します。

たとえば、Microsoftのアプリの設定は HKCU\Software\Microsoft\ の下に、Googleのアプリなら HKCU\Software\Google\ の下に格納されます。
アプリをアンインストールした後もこれらのキーが残ることがありますが、削除しても基本的に問題ありません。

Software\Classes サブキーについて

HKCU\Software\Classes は、ファイルの拡張子とアプリの関連付けをユーザーごとに上書き設定するためのキーです。
HKEY_CLASSES_ROOT(HKCR)はHKLMの関連付けとHKCUの関連付けを統合して表示したビューですが、同じ設定が両方に存在するときはHKCUの設定が優先されます(Programming Field「Windows レジストリ 解剖記」より)。


HKEY_CURRENT_USERとHKEY_LOCAL_MACHINEの違い

レジストリを操作するときに特に重要なのが、HKCUとHKLMの使い分けです。

比較項目HKCUHKLM
対象現在のユーザーのみPC全体(全ユーザー共通)
書き込み権限一般ユーザーで可能管理者権限が必要
設定の影響範囲そのユーザーにのみ反映PCにログインする全ユーザーに反映
保存場所C:\Users\ユーザー名\NTUSER.DAT%SystemRoot%\System32\Config\

同一のキー名がHKCUとHKLMの両方に存在する場合、HKCUの設定が優先されます(Qiita「Windowsのレジストリについての概要」より)。

アプリの開発指針としても、「ユーザーごとに異なる設定はHKCUに書き込み、PCの全ユーザーに適用する設定のみHKLMに書き込む」という方針が推奨されています。


スタートアップ設定(自動起動)との関係

HKCU\Software\Microsoft\Windows\CurrentVersion\Run は、ユーザーのサインイン時に自動起動するプログラムを登録するキーです。

このキーに登録されたプログラムは、そのユーザーがサインインするたびに自動で起動します。
類似のキーに次の2種類があります。

  • Run:サインインのたびに毎回起動する
  • RunOnce:次回サインイン時に1回だけ起動し、その後エントリーが削除される

なお、HKLM側の同名のキー(HKLM\Software\Microsoft\Windows\CurrentVersion\Run)はPC全体の自動起動設定です。
マルウェアがこれらのキーに自身を登録して常駐するケースもあるため、不審なエントリーがないか確認することがセキュリティ対策のひとつになります。


管理者からHKCUを編集することはできるか

管理者アカウントでレジストリエディターを開いても、表示されるHKEY_CURRENT_USERはあくまで管理者自身の設定です。
別のユーザーのHKCUにアクセスしたい場合は、HKEY_USERSの下にある該当ユーザーのSIDキーを直接編集する必要があります(ESRIジャパン技術サポートより)。

その設定は、対象ユーザーが次回サインインしたときにHKCUとして読み込まれます。


まとめ

HKEY_CURRENT_USERは、現在ログイン中のユーザー専用のWindows設定を一元管理するレジストリキーです。

  • 実態はHKEY_USERS内の該当ユーザーSIDキーへのシンボリックリンク
  • ディスク上のハイブファイルは C:\Users\ユーザー名\NTUSER.DAT
  • HKLMと同名のキーが存在する場合、HKCUの設定が優先される
  • 一般ユーザー権限で読み書きが可能(管理者権限不要)
  • スタートアップの自動起動設定もこのキー配下に存在する

レジストリを編集する際は、必ず事前にバックアップ(.regファイルのエクスポート)を取るようにしてください。
誤って重要なキーを削除・変更するとWindowsが正常に起動しなくなる恐れがあります。


参考情報源:

コメント

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