4 Stimmen

Wie überwacht man die IO-Aktivität eines Prozesses mithilfe von C#?

Mit FileSystemWatcher können wir die Ein- und Ausgabeaktivitäten eines bestimmten Dateisystems überwachen, aber gibt es eine Möglichkeit zu wissen, welcher der laufenden Prozesse diese E/A verursacht?

Genauer gesagt, nehmen wir an, ein laufender Prozess namens abc.exe erstellt eine Datei text.txt auf Laufwerk D. Wir können über FileSystemWatcher überwachen, dass eine Datei namens text.txt auf Laufwerk D erstellt wurde, können wir jedoch programmgesteuert bestimmen, dass ein Prozess namens abc.exe diese bestimmte Datei auf Laufwerk D erstellt?

7voto

Samuel Neff Punkte 70231

handle.exe von SysInternals ist ein Befehlszeilenwerkzeug, das einen programmatischen Zugriff darauf ermöglicht, welches Programm eine bestimmte Datei oder ein bestimmtes Verzeichnis geöffnet hat.

C:\>handle.exe c:\Windows\system32\stdole2.tlb

Erzeugt diese Ausgabe:

Handle v3.42
Copyright (C) 1997-2008 Mark Russinovich
Sysinternals - www.sysinternals.com
devenv.exe         pid: 5240    184: C:\Windows\System32\stdole2.tlb
Ssms.exe           pid: 5000    1F4: C:\Windows\System32\stdole2.tlb

Die sich programmgesteuert verarbeiten lässt.

http://technet.microsoft.com/en-us/sysinternals/bb896655.aspx

1voto

Hans Passant Punkte 894572

Nein, das ist nicht möglich. FSW befindet sich auf einer sehr niedrigen Ebene im Dateisystemtreiber-Stack. Es kann nur feststellen, dass das Dateisystem geändert wird, es weiß jedoch nicht, von wem. Das ist ganz bewusst so gemacht, es könnte sich um einen Prozess handeln, der sich auf der anderen Seite der Welt befindet und über eine VPN-Verbindung über das Internet auf einen Dateifreigabe zugreift. Es gibt keine vernünftige Alternative für Ihre Anfrage.

0voto

Dave Swersky Punkte 34052

Ich würde empfehlen, die SysInternals-Dienstprogramme dafür zu verwenden, anstatt Ihre eigenen zu erstellen.

http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X