SSブログ

FSDirWalkerでFile Management APIのファイルの復元を利用する [ソフトウェア]

※2019/1/10 追記しました。

FSDirWalkerのバージョン2.2から、回復コンソールなどの保守環境で実行され、更にWindowsのFile Management APIが使用可能な環境では、ディスク上から削除されたファイルの復元機能を利用できる様にしました。

通常はWindows 10やWindows 8の保守環境(トラブルシューティング→詳細オプション→コマンドライン)からFSDirWalkerを実行した場合に、[ツール]メニューから機能を選択できます。

Windows 7,Windows Vistaの場合は、専用のFMAPIをダウンロードしてインストールする必要があり、尚且つ保守環境でもFMAPI.DLLが利用できる状態(DLLロードパスを通すかロードできる位置にDLLをコピーする)にする必要があります。

詳細は、Windows PEWindows REWindows ADKなどのページを参照してください。





で、ここからはシステムに詳しい方向けなのですが…

通常のWindows 10やWindows 7上でファイルの復元機能を利用する方法です。

[2019/1/10追記]
読者の方のご指摘を受け、処理の方法を一部変更しました。
FSDirWalker 2.3.340.2 以降をご利用の方は、ここで紹介している手動でMiniNTキーを作成する方法ではなく、下記のセクション「FSDirWalkerをお使いの方向け(非公式)」で紹介する方法で行ってください。
※Windows 7ではFMAPIをダウンロードしてインストールする必要があるのは同じです。


レジストリに「フェイク」キーを作成するので最初に断っておくと、ここで作成するキーを削除せず残したままWindowsをシャットダウンしたり再起動すると、Windowsを起動できなくなる様です(復旧するには、回復コンソールでレジストリエディタを使い、レジストリハイブを手動でロードして、作成したキーを削除しなければならなくなります)。

このキーの下に、例えば'AllowRefsFormatOverNonmirrorVolume'(以前ネット上で流れていたReFSでフォーマット可能にするための非公式エントリ。現在は無効になっている様です)などのエントリが存在すると再起動が可能な場合もある様ですが、いずれにせよ公式にサポートされている機能ではありません。

その為、あくまでも技術的な参考情報として、もしお試しになる場合もあくまで自己責任でお願いします。
(この記事で後述する、万一の際に回復コンソールを使用して復旧操作に自信が無い時は止めた方がよいかもしれません)

条件:
Windows 10、Windows 8.1の場合はFMAPIは既にインストールされています。
Windows 7の場合は、専用のFMAPIをダウンロードしてインストールする必要があります。
Update for Windows 7 (KB943790) File Management API 32ビット版
Update for Windows 7 (KB943790) File Management API 64ビット版

手順:
  1. レジストリエディタを起動する。

  2. 以下のキーを選択する。
  3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control

  4. 右クリックしてメニューから[新規]->[キー]を選択する。

  5. 新しく"MiniNT"キーを作成する。
  6. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\MiniNT
    というキーパスになります。
    ※もし、既に存在していたなら作成は不要です。

  7. この状態でFSDirWalkerを「管理者モード」で実行すると、リボンの[ファイル](Windows7は[アプリケーション])タブの[ツール]項目に[削除されたファイルの復元]が表示されます。

  8. [削除されたファイルの復元]を選択すると、ウィザードが表示されるので、後はその指示に従って操作します。

  9. 機能を使用し終わったら、必ず上記で追加したレジストリキー("MiniNT")を削除します。
    ※元から存在していた場合は削除は不要です。


繰り返しになりますが、ここで作成した"MiniNT"キーを消し忘れたままシャットダウンするとWindowsが起動しなくなりますので十分注意してください。

もともとこのキーは、Windowsの各種保守モード・環境で使用される様です。そのため通常モードのブートシークエンスの中で誰かがこのキーを発見すると、そこから何らかの設定を読み込もうとしますが、MiniNTキーだけ存在しエントリが何も無い状態だと必要な情報を得られず、参照したモジュールなりタスクなりがブートの途中で「止まってしまう」(現状としてはブートを繰り返す)のだと推測しています。




[2019/1/10追記]
FSDirWalker 2.3.340.2以降をお使いの場合は、こちらで行ってください。

FSDirWalkerをお使いの方向け(非公式)

次のレジストリキー
HKEY_CURRENT_USER\Software\YamashitaSoftwareWorks\FSDirWalker

の下に、次のエントリを作成してください。
ForceEnableMiniNT (REG_DWORD) = 0x3

このエントリを作成し、FSDirWalkerを管理者モードですればレジストリのMiniNT関連の操作を自動で行います。ただし、ファイルの復元ウィザードを表示中に、なんらかの理由でFSDirWalkerを終了(タスクマネジャから強制終了したりアプリケーションエラーが起きたりなど)させたり、PCをシャットダウン(停電とかブルースクリーンなど)してしまうと、同じ様にMiniNTキーが残ってしまいますので注意してください。前者の場合はレジストリエディタで削除できますが、シャットダウンしてしまうと問題が起きる可能性があります。この方法の場合、MiniNTを一時的な揮発性のキーとして作成しますので、残ることはありません。
ただし、ユーザーが手動でキーを作成していたり、他のプログラムが作成していた場合は、この限りではありません。


もしもMiniNTを消し忘れて残ってしまって、Windowsが起動しない場合

私も何度もやってしまいました…。自分自身に対する戒めとしても記しておきます。
  1. 回復コンソールを起動します。
  2. コマンドプロンプトを開きます。
  3. レジストリエディタを起動します。
  4. HKEY_LOCAL_MACHINEを選択し[ファイル]メニューの[ハイブの読み込み]を選択します。
  5. 立ち上がらなくなったWindowsのシステムドライブを探し、以下のファイルを選択します。
    <ドライブ>:\Windows\System32\config\SYSTEM
    ※回復環境のWindowsフォルダと取り違えない様に注意。
  6. 追加したハイブに適切なキー名を指定します。
    例) Win10
  7. 上記で指定したキー名の下からMiniNTを探します。
    例) HKEY_LOCAL_MACHINE\Win10\ControlSet001\Control\MiniNT
  8. MiniNTキーを削除します。
  9. 6.で追加したハイブを選択し、[ファイル]メニューの[ハイブのアンロード]を実行します。
  10. 回復コンソールを終了し、Windowsを起動します。

nice!(0)  コメント(2) 

nice! 0

コメント 2

_

プログラム内から作る場合 REG_OPTION_VOLATILE で作ればどんな形でアプリやOSが異常終了しようが次回OS起動時キーが残ったままになるのを避けられると思います
by _ (2018-12-25 16:26) 

Firefly

_さん(匿名さん)、お返事が遅れて申し訳ありませんでした。
なるほど!その手がありましたね!試してみます。うまく行くことが確認できたら、正式に実装すると思います。
ご指摘、ありがとうございました!

by Firefly (2018-12-30 19:38) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

FSDirWalker 2.2.322...FSDirWalker 2.3.340... ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。