Hintergrund
Windows Explorer verwaltet eine Liste der Dateivorgänge, damit Sie sie rückgängig machen können (10 Vorgänge bis XP und 32 unter Vista). Sie können den letzten Vorgang anzeigen, ohne ihn auszuführen, indem Sie das Menü " Bearbeiten" öffnen und den Befehl " Rückgängig" markieren, ohne ihn auszuwählen und in der Statusleiste nachzuschauen. .
Problem
Leider wird hiermit nicht nur die Operation in der Statusleiste angezeigt, die standardmäßig nicht aktiviert ist, sondern nur die letzte Operation. Schlimmer noch, es werden nur die Operation und der Dateiname angezeigt , nicht die Pfade.
Anwendungsfall
Ein Beispiel für die Verwendung ist , wenn Sie umbenennen und eine Reihe von Dateien-besonders ähnlich benannten Dateien wie das Verschieben download1.png
, download2.png
etc.-dann erkennen , dass Sie eine der Dateien zu verschieben vergessen, nachdem er die Umbenennung. Wenn Sie sich die Liste der zuletzt geänderten Dateinamen und Pfade ansehen, können Sie herausfinden, welche übersehen wurde, ohne alle nachfolgenden Vorgänge rückgängig machen zu müssen, die zu einem völligen Durcheinander führen könnten.
Frage
Kennt jemand eine Möglichkeit, eine Liste aller Vorgänge abzurufen, die Windows in seinem Rückgängig-Puffer gespeichert hat? Ich habe ein Programm gesehen, das sich in Windows einbinden und Dinge tun kann, die nicht unterstützt werden, wie das Umordnen von Taskleisten- und Tray-Symbolen (XP hat dies nicht unterstützt).
quelle
taskbar shuffle
Antworten:
Hoffentlich bekomme ich genau das, wonach Sie suchen. Wenn ja, scheint es eine WinAPI-Methode zu geben - ReadDirectoryChangesW , die möglicherweise das tut, was Sie erwarten.
Ich bin nicht sicher, ob der folgende Ansatz mit dem Dateivorgangsprotokoll funktioniert oder nur Änderungen anzeigt, die nach der Verwendung vorgenommen wurden. Da dieser Ansatz jedoch nicht so unterschiedlich ist und möglicherweise in dem von Ihnen angegebenen Szenario verwendet wird, erwähne ich, dass dies auch der Fall sein kann etwas abseits des Themas sein:
Möglicherweise können Sie das FileSystemWatcher- Objekt mit einem Ordner verbinden (das Thema des Links ist jedoch anders, dieser IMHO bietet einen guten Überblick über den Klassenzweck). Ich weiß, dass es sich um eine C # .NET-Klasse handelt von diesem Skript aus dem Microsoft Script Center.
Möglicherweise erwägen Sie Lösungen von Drittanbietern wie den Windows Explorer-Tracker , die anscheinend dasselbe tun (ich glaube, sie verwenden eher (dokumentierte) API-Aufrufe als Reverse-Engineering-Techniken) ).
Und last but not least können Sie sogar erwägen, eine einfache WPF-Anwendung auf der Basis von FileSystemWatcher oder eine etwas komplexere WPF-Anwendung mit der ReadDirectoryChangesW- Methode zu schreiben .
quelle