Programming Field

Reg Load - DOS コマンド一覧

スポンサーリンク

[Windows NT系/XP 以降] レジストリデータが含まれる「ハイブデータ」ファイルを、指定したレジストリキーの場所にマッピングして読み込みます。Regの操作の1つです。

※ コマンドの実行にはバックアップ権限(SeBackupPrivilege)と復元の権限(SeRestorePrivilege)が必要です(通常は両方ともBackup Operatorsグループに付与されています)。コマンドプロンプトから実行する場合でウィンドウに「管理者」と入っていない場合は、別途「管理者で実行」でコマンドプロンプトを開くか、Runasなどを使った昇格操作が必要になります。

構文

reg[.exe] load <key> <file-name>

※ コマンドのヘルプには「/reg:32 | /reg:64」も表示されますが、実際には使用できません。(使用できたとしても効果がありません。)

<key>
キー名を指定します。具体的な指定方法は「キー名の指定方法について」をご覧ください。
なお、ここで指定するキー名はルートキーが HKEY_LOCAL_MACHINE または HKEY_USERS のいずれかのみに限られます。また、HKEY_LOCAL_MACHINE または HKEY_USERS のいずれかの直下にあたるサブキーのみが指定可能であり、コマンド実行時点でそのキーが存在しない必要があります。
<file-name>
データを保持しているファイル名を指定します。

解説

Regの「LOAD」コマンドはハイブデータをレジストリツリーにロードしてレジストリデータとして取り扱えるようにします(「ハイブのロード」と呼ぶことがあります)。Reg Saveで作成されたデータを読み込んで利用する場合に用いることができますが、Windowsの挙動に異常がある場合などに、システムが保存したユーザー別レジストリデータ(ユーザーごとのNTUSER.DAT)またはシステム設定のデータ(%SystemRoot%\System32\Config\Software など)を一時的にロードして内部のレジストリデータをメンテナンスする、といった目的で利用することができます。

もともとレジストリは、システムによってハイブのロードを組み合わせて構成されており、例として「HKEY_USERS\.DEFAULT」キーはファイル「%SystemRoot%\System32\config\DEFAULT」をロードしたレジストリキーとなっています。特殊な例としては「HKEY_CURRENT_USER」は現在のユーザーのホームディレクトリにある「NTUSER.DAT」がハイブとしてロードされたレジストリキーとなっています。これらはシステムによって管理されているため、Windows実行中にアンロードしたり別のレジストリの場所に再ロードしたりすることはできませんが、Windowsを実行していないコンピューター上にあるシステムレジストリのハイブデータや、ログインしていないユーザーのユーザー別ハイブデータをロードして現在の環境で取り扱う、といったことは可能です。

※ システムによって自動的に作成されたハイブデータをロードする場合は、その取り扱いに注意する必要があります。不用意にデータの変更や削除を行うと、元ファイルを再びシステムが利用しようとした際に予期しない問題が発生する可能性があります。これらのデータを扱う場合は、ロードする前に事前にバックアップを取っておくことを推奨します。

読み込んだハイブデータファイルはシステムによって常にオープンされた状態になるため、他のプロセス(プログラム)から読み書き・削除することができなくなります。また、ハイブがロードされてマップされたレジストリキー以下のデータに書き込みが行われると、ロード元のファイルにそのデータが反映されます。

※ 実際のファイルへの反映タイミングは未確認です。
※ ロード済みのハイブデータファイルを、ロード先のレジストリキーへもう一度ロードしようとすると、何も変化せずに正常終了します。
※ Reg Loadはローカルコンピューターのみを操作対象とします。(Win32APIの「RegLoadKey」関数は、呼出し手順によってリモートコンピューター上のハイブデータをリモートコンピューター上のレジストリにロードすることができます。)

なお、ロードしたデータはReg Unloadでアンロードします。

サンプル

reg load HKLM\RepairData Backup\ako\MyCompany_Key.dat

ファイル「Backup\ako\MyCompany_Key.dat」を読み込み、「HKEY_LOCAL_MACHINE\RepairData」以下のレジストリデータとして扱えるようにします。