Ist es möglich, Dateioperationen mit .NET zu verfolgen?

8

Ist es möglich, wenn eine Dateioperation irgendwie aufgerufen wird - wie Öffnen oder Schließen -, dass ich damit umgehen kann, bevor die Anforderung vom Betriebssystem ausgeführt wird, und wenn möglich, durch . NET ? Wenn .NET keine Fähigkeiten wie diese hat, wie kann ich das tun?

    
Halil Ibrahim 10.05.2012, 20:11
quelle

4 Antworten

6

Was Sie tun können, kann getan werden. Viren-Scanner zum Beispiel machen es die ganze Zeit. Mit Process Monitor können Sie die Dateiaktivität einfach überwachen. Sie können dies auch programmgesteuert in C # mithilfe der FileSystemWatcher-Klasse tun. Aber es kann nicht in C # getan werden, ein Programm daran zu hindern, das Programm zu öffnen oder zu versuchen, den Zugriff auf die Datei zu verhindern. Sie müssen entweder C oder C ++ verwenden. Sie müssen einen Dateisystemfiltertreiber erstellen. Es ist eine komplexe Sache zu bauen, aber es ist genau das, was Sie brauchen. Um MSDN zu zitieren:

A file system filter driver intercepts requests targeted at a file system or another file system filter driver. By intercepting the request before it reaches its intended target, the filter driver can extend or replace functionality provided by the original target of the request. Examples of file system filter drivers include anti-virus filters, backup agents, and encryption products.

    
Icemanind 10.05.2012, 21:50
quelle
3

Sie können die Windows-API anschließen, wenn Sie möchten. Sehen Sie sich dazu in .NET / C # an:

EasyHook Windows API

    
negEntropy 10.05.2012 20:21
quelle
2

Sysinternals bietet ein kostenloses Tool mit der Bezeichnung Process Monitor, mit dem man sich an beliebige Windows-Prozesse (einschließlich .NET-Anwendungen) anhängen und Systemaufrufe erfassen kann, einschließlich Öffnen, Schließen, Lesen usw.

Sie können es auf der Download-Seite des Prozess-Monitors herunterladen.

BEARBEITEN

Wenn ich Ihre Frage noch einmal durchgelesen habe, sehe ich, dass Sie solche Vorgänge abfangen und möglicherweise abbrechen möchten. Ich glaube, dass die FileSystemWatcher -Klasse die beste Wahl ist, obwohl ich nicht denke, dass sie Dateioperationen einseitig abbrechen kann - Sie müssten einen kooperativen Mechanismus aufbauen, der dem Aufrufer signalisiert, den Vorgang abzubrechen.

    
Ben 10.05.2012 20:46
quelle
1

Ich bin mir ziemlich sicher, dass Sie bei dieser Art von Operation in den Kernel einsteigen müssen und ich bin mir ziemlich sicher, dass das bedeutet, dass Sie in C programmieren müssen. Sehen Sie sich Dateisystemtreiber .

UPDATE: Dieser SO-Link kann helfen.

UPDATE: Es wurde eine Google-Suche für Windows-Dateisystemtreiber

ALSO Was ist eine gute Ressource, um mit der Entwicklung von Windows-Dateisystemtreibern zu beginnen?

    
kenny 10.05.2012 21:43
quelle

Tags und Links