web-dev-qa-db-ja.com

Windowsエクスプローラーの完全な元に戻す履歴の表示

バックグラウンド

Windowsエクスプローラーは、ファイル操作のリストを保持しているので、それらを元に戻すことができます(XPまでの10回の操作とVistaからは32回)。実行せずにlast操作を確認できます)。 Editメニューを開き、Undoコマンドを選択せず​​に強調表示します。それとステータスバーを見てください(それでも、それはしばしば機能せず、ステータスバーに空白の文字列を表示するだけです)。

問題

残念ながら、これはステータスバーに操作を表示するだけでなく、デフォルトでは有効になっていませんが、これは最後の操作のみを表示します。さらに悪いことに、パスではなく、操作とファイルのnameのみが表示されます。

ユースケースシナリオ

使用例としては、一連のファイル(特に、download1.pngdownload2.pngなどの同様の名前のファイル)の名前を変更して移動する場合、名前を変更した後でファイルの1つを移動するのを忘れていることに気付きます。変更された最後のいくつかのファイル名とパスのリストを見ると、物事を完全に混乱させる可能性のある後続の操作をすべて元に戻すことなく、どれが欠落していたかを把握できます。

質問

Windowsが元に戻すバッファに保存したすべての操作のリストを取得する方法を知っている人はいますか? Windowsにフックして、タスクバーやトレイアイコンの再配置などのサポートされていないことを実行できるプログラムを見たことがあります(XPはそれをサポートしていませんでした)ので、誰かが元に戻すバッファーで同じことを行うことができたと思います。

16
Synetech

うまくいけば、私はあなたが探しているものを正しく手に入れます。もしそうなら、WinAPIメソッドがあるようです ReadDirectoryChangesW それはあなたが期待することをするかもしれません。

次のアプローチがファイル操作履歴で機能するのか、それとも使用後に行われた変更のみを表示するのかはわかりませんが、このアプローチはそれほど変わらず、シナリオで使用される可能性があるため、提供されたシナリオでも可能性があることを述べておきます少しトピックから外れる:

FileSystemWatcher オブジェクトをフォルダーに接続できる可能性があります(ただし、リンクのトピックは異なります、 this IMHOはクラスの目的の概要を示しています)–これはC#.NETクラスです、私は知っていますが、Microsoftのスクリプトセンターから このスクリプト で示されているように、C#とはPowerShellにすることができます。

Windows Explorerトラッカー のようなサードパーティのソリューションを検討するかもしれませんが、同じように見えます(リバースエンジニアリング手法よりも(文書化された)API呼び出しを使用していると思いますが、少し心配しているようですが、だから私は1つだけ調べました)。

最後になりましたが、FileSystemWatcherまたはもう少し複雑なWPFアプリケーション呼び出しに基づいて単純な WPFアプリケーション を作成することを検討することもできます。 ReadDirectoryChangesWメソッド。

6
Matt Stuvysant