Erkennen die Datei "KOPIE" - Betrieb in Windows
Sagen, ich möchte informiert werden, Wann immer eine Kopie der Datei gestartet wird auf meinem system und Holen Sie sich den Dateinamen, das Zielverzeichnis, in dem es kopiert oder verschoben wurde und der Zeitpunkt der Kopie.
Ist das möglich? Wie würden Sie es angehen? Sollten Sie Haken CopyFile-API-Funktion?
Gibt es irgendeine software, die bereits erreicht dies?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Windows hat das Konzept der I/O Filter, mit denen Sie fangen alle I/O-Operationen, und wählen Sie zusätzliche Aktionen ausführen, wie ein Ergebnis. Sie sind vor allem für die A/V-Typ-Szenarien können aber programmiert werden, für eine Vielzahl von Aufgaben. Der SysInternals Process Monitor beispielsweise mit einer I/O-filter finden Sie in der Datei level-Zugriff.
Können Sie Ihren aktuellen Filter unter MS-Filter-Manager (fltmc.exe von einer Eingabeaufforderung)
Gibt es ein kit, um Ihnen helfen, schreiben filtern können Sie die Treiber und entwickeln Sie Ihre eigenen.
http://www.microsoft.com/whdc/driver/filterdrv/default.mspx ist ein Ausgangspunkt, um in der Tiefe Informationen
Als es ist .NET-tag auf diese Frage, würde ich einfach verwenden
System.IO.FileSystemWatcher
das ist in der .NET-Framework. Ich vermute, es ist implementiert mit die I/O Filter, Andrew erwähnt in seiner Antwort,, aber ich weiß es wirklich nicht (noch kümmern, genau). Würde passen, dass Ihre Anforderungen?Als Andrew sagt, ein filter-Treiber ist der Weg zu gehen.
Gibt es keine narrensichere Weg von der Erkennung einer Kopie der Datei als verschiedene Programme kopieren Sie die Dateien auf verschiedene Weise (einige können verwenden Sie die CopyFile-API, andere können nur Lesen eine Datei und schreibt den Inhalt in eine andere selbst). Sie könnten versuchen, die Berechnung eines hash-filter-Treiber, der eine Datei zum Lesen geöffnet, und dann das gleiche tun, nachdem ein Programm beendet eine Datei schreiben. Wenn die hashes übereinstimmen, die Sie wissen, Sie haben eine Datei kopieren. Aber diese Technik kann langsam sein. Wenn Sie nur Haken Sie die CopyFile-API werden Sie vermissen-Datei kopiert, ohne, dass die API. Java-Programme (um nur einen zu nennen) haben keinen Zugriff auf die CopyFile-API.
Dies ist wahrscheinlich unmöglich, da es keine Garantie mehr für eine zentrale Methode zur Durchführung von kopieren/verschieben. Sie konnten Haken in core API (wie CopyFile) aber natürlich, dass bedeutet, dass Sie immer noch verpassen kopieren/verschieben, dass jede Anwendung auch ohne die Verwendung dieses API.
Vielleicht könnten Sie sehen das gesamte Dateisystem mit IO-Filter für Dateien zu öffnen und dann nur Schlussfolgerungen ziehen, selbst wenn zwei Dateien mit dem gleichen Namen und der gleichen Größe sind offen zur gleichen Zeit. Dass es aber keine 100% Lösung.
Wie bereits erwähnt, eine Datei kopieren-operation kann auf unterschiedliche Arten durchgeführt werden und kann bedeuten, mehrere Festplatten und Speicher überträgt, ist also nicht möglich, einfach vom system benachrichtigt, wenn eine solche operation Auftritt.
Auch für den Benutzer gibt es mehrere Möglichkeiten, um duplicate content und ganze Dateien. Befehle kopieren, "speichern", "senden an" verschieben, mithilfe von verschiedenen tools. Unter der Haube der Kopiervorgang ist eine Folge von read /write, korreliert nach bestimmten Parametern. Das ist der einzige Weg, um Garantie für eine erfolgreiche Auditierung. Einhaken auf CopyFile wird Ihnen nicht das kopieren von Total Commander zum Beispiel. Noch geben Sie "Speichern unter" - Operationen, die in der Tat-Datei erstellen -> Datei-Inhalt verschoben -> schließen der original-Datei -> öffnen der neuen Datei. Dann sind die Dinge anders, wenn der Umgang mit kopieren über das Netzwerk, imitierten copy-Vorgänge, bei denen die Datei-handle-security-Kontext ist anders als der Prozess, Sicherheitskontext, und so weiter. Ich glaube nicht, dass es ist ein einfacher Weg, um alle der oben genannten.
Jedoch, es ist eine software, die Sie Benachrichtigen können, für die meisten gängigen Operationen kopieren (also wenn Sie ausgeführt werden, über den windows-explorer, total commander, Eingabeaufforderung oder andere Programme). Es gibt Ihnen auch die Quell-und Ziel-Datei den Namen, den Zeitstempel und die weiteren relevanten details. Es kann hier gefunden werden: http://temasoft.com/products/filemonitor.
Hinweis: ich arbeite für das Unternehmen und entwickelt das Produkt.