引き続き Windows 7 の VMware 環境で、レジストリファイル内で VSS に関連するキー情報について確認してみたいと思います。
テスト環境には C ドライブと F ドライブがありますが、まずはシステムの保護を有効にしておき、vssadmin でボリューム情報を確認してみます。
C:\Windows\system32>vssadmin list volumes
vssadmin 1.1 - ボリューム シャドウ コピー サービス管理コマンドライン ツール
(C) Copyright 2001-2005 Microsoft Corp.ボリューム パス: C:\
ボリューム名: \\?\Volume{8ff420b4-a8cf-11de-b117-806e6f6e6963}\
ボリューム パス: F:\
ボリューム名: \\?\Volume{a2064db4-b4a1-11de-b72b-806e6f6e6963}\
今回のテストで利用しているボリュームは a2064db4-b4a1-11de-b72b-806e6f6e6963 になりますので、この文字列に関連する情報がレジストリファイル内に登録されていると予想して、レジストリファイルの HKLM を検索してみます。
すると以下のキーについてボリュームに関連する値が発見されます。%3A となっている箇所は「:」だと思いますので、それぞれ C: と F: ですかね。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP\Clients
{09F7EDC5-294E-4180-AF6A-FB0E6A0E9513}値
\\?\Volume{8ff420b4-a8cf-11de-b117-806e6f6e6963}\:(C%3A)
\\?\Volume{a2064db4-b4a1-11de-b72b-806e6f6e6963}\:VSSTEST (F%3A){3E7F07C9-6BC3-11DC-A033-0019B92BB8B1}値
\\?\Volume{8ff420b4-a8cf-11de-b117-806e6f6e6963}\:(C%3A)
\\?\Volume{a2064db4-b4a1-11de-b72b-806e6f6e6963}\:VSSTEST (F%3A)HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\VSS\Diag\VolSnap
Volume{a2064db4-b4a1-11de-b72b-806e6f6e6963}Activate (Enter)値
バイナリデータ
この状態で、「システムの保護を無効にする」を適用すると、HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP\Clientsにある、{09F7EDC5-294E-4180-AF6A-FB0E6A0E9513}値と{3E7F07C9-6BC3-11DC-A033-0019B92BB8B1}値のそれぞれから、\\?\Volume{a2064db4-b4a1-11de-b72b-806e6f6e6963}\:VSSTEST (F%3A)のデータが削除されます。
しかし、HKLM\SYSTEM\ControlSet001\services\VSS\Diag\VolSnapのキー配下にある値は残ったままとなるようです。
システムの保護では、(1)システム設定とファイルの以前のバージョンを復元する、(2)ファイルの以前のバージョンのみを復元する、の二種類を選択することが可能ですが、ざっと見た範囲ではこのレベルの違いを示す値がどこかに設定されていそうですが特定できていません。VolSnap のバイナリ値かなぁとも思ったのですが、違いが見出せない...
よく見ると、(1)システム設定とファイルの以前のバージョンを復元する、を設定している場合には、{09F7EDC5-294E-4180-AF6A-FB0E6A0E9513}値 に C: と F: が入りますが、(2)ファイルの以前のバージョンのみを復元する、を選択している場合には、{09F7EDC5-294E-4180-AF6A-FB0E6A0E9513}値には C: のみが登録されていて、F: は入らないですね。予測ですが、以下のような仕組みでしょうか。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SPP\Clients
(1)システム設定とファイルの以前のバージョンを復元する、を設定した場合にボリュームが登録される値は以下の二つ。
{09F7EDC5-294E-4180-AF6A-FB0E6A0E9513}
{3E7F07C9-6BC3-11DC-A033-0019B92BB8B1}(2)ファイルの以前のバージョンのみを復元する、を設定した場合にボリュームが登録される値は以下。
{3E7F07C9-6BC3-11DC-A033-0019B92BB8B1}
上記は Windows 7 のレジストリ構成になりますが、試しに Windows Vista で確認してみると、Vista でも {09F7EDC5-294E-4180-AF6A-FB0E6A0E9513} 値の存在が確認できます。
Vista では Windows 7 のように保護対象範囲を(1)や(2)のように選択する項目がないので、{3E7F07C9-6BC3-11DC-A033-0019B92BB8B1}値はそもそも存在しえないのかもしれません。
Windows Vista では {09F7EDC5-294E-4180-AF6A-FB0E6A0E9513} 値だけが使われているということであれば、この値を移植してみる方向でしょうか。
と思ったのですが、(コピーした)同じ仮想ディスクを両方のゲスト OS で設定しているのですが、値を見比べてみたところ、ボリュームを示す値が異なりますね。
Windows Vista では以下の値が設定されているボリュームがあります。
\\?\Volume{63452948-b4a0-11de-a7ab-000c29dea2ff}\:VSSTEST (E%3A)
これを Windows 7 の環境に接続すると、Volume{a2064db4-b4a1-11de-b72b-806e6f6e6963}として識別されるので、どうもレジストリ値を移植する方法はボツになりそうな気がしています。
そもそもシステム領域の確認が出来ない(レジストリファイルが確保できない)ケースでは、レジストリ値を確認すること自体が出来ませんので、フォレンジック調査で VSS のスナップショット内容(以前のバージョン)を確認したいケースでは、調査用 PC の OS に対象ボリュームを認識させてから、再度スナップショットを再認識させる手順を取るほうが簡単かもしれません。