レジストリーは、通常起動している OS のレジストリーをレジストリーエディター(regedit.exe)などで編集するのが一般的ですが、起動していない OS のレジストリーを編集する事も可能です。
どういった時にこいつの出番があるかというと、起動しなくなったPCを起動させるためにレジストリーの調査と編集をするとか、VHD boot する前の VHD の RunOnce に仕込みを入れたいとか、ウイルスに感染した PC のレジストリを細工してウイルスを無効化するとか(これは、Windows Sysinternals の AutoRuns で「Analyze Offline System」すると細工で来ちゃいますけど)
これは「ハイブ」と呼ばれるレジストリーの内部構造を担っているレジストリーの実態ファイルそのものを、起動している OS のレジストリーにマウントすることで編集を可能にします。
ハイブをマウントする前に、オリジナルレジストリーと、ハイブの関係を整理しておきましょう。
環境変数の展開例
%SystemRoot%
→ C:\Windows
%USERPROFILE%
→
C:\Users\HogeHoge
レジストリーキーの省略形
HKEY_LOCAL_MACHINE
= HKLM
HKEY_USERS
= HKU
HKEY_CURRENT_USER
= HKCU
レジストリーキー | ハイブファイル |
HKEY_LOCAL_MACHINE\SOFTWARE | %SystemRoot%\system32\config\SOFTWARE |
HKEY_LOCAL_MACHINE\SYSTEM | %SystemRoot%\system32\config\SYSTEM |
HKEY_LOCAL_MACHINE\SAM | %SystemRoot%\system32\config\SAM |
HKEY_LOCAL_MACHINE\SECURITY | %SystemRoot%\system32\config\SECURITY |
HKEY_USERS\.DEFAULT | %SystemRoot%\system32\config\DEFAULT |
HKEY_CURRENT_USER | %USERPROFILE%\NTUSER.DAT |
GUI で処理してもいいのですが、HKEY_CURRENT_USER のマウントが面倒なので、まずはコマンドラインでのマウントです。
ハイブをマウントできる先は、HKLM と HKU の2か所だけなので、マシン系を HKLM に、ユーザー系を HKU にマウントします。
まずは、ターゲットのシステムストレージを、起動している OS から見える様にマウントし、ドライブレターが割当たっている状態にします。
ハイブをマウントするには、その状態で「reg load レジストリーキートップ\マウントするキー ハイブファイルフルパス」コマンドでターゲットとなるハイブファイルをマウントします。
例)「HKLM\VHD_boot」に、ターゲットの「HKEY_LOCAL_MACHINE\SOFTWARE」を割り当てる
reg load HKLM\VHD_boot e:\Windows\System32\config\SOFTWARE
この状態で、ローカルレジストリーの一部としてハイブが割当たりましたので、レジストリーエディターなり、reg コマンドなり、PowerShell でターゲットのレジストリーが操作できます。
アンマウントは、「reg unload レジストリーキートップ\マウントするキー」です。
例)「HKLM\VHD_boot」にマウントしていたハイブをアンマウントする
reg unload HKLM\VHD_boot
GUI(regedit.exe)でハイブをマウントする場合は、マウント先のレジストリートップを選択し、「ハイブの読み込み」をし、マウント先になるキーを指定します。
マウント先のレジストリーを選択してハイブの読み込み
対象のハイブを選択
マウントするキーを指定
ハイブがマウントされた
ハイブをアンマウントするときは、アンマウントするキーを選択し、ハイブのアンロードをします。
アンマウントするハイブを選択してハイブのアンロード
元々あるハイブもアンロード メニューが有効なのですが、エラーになりアンロードできません。とは言っても、怖いのでアンロードオペレーションはしないように
Copyright © MURA All rights reserved.