.net nach File Watcher-erhalten Sie den Prozessnamen, der eine Datei in Windows erstellt hat?



vb.net filesystemwatcher (6)

Ich habe FileMon.exe verwendet, funktioniert aber nur unter XP.

Gibt es eine gute Möglichkeit, den Prozessnamen, der eine Datei in Windows erstellt hat, abzurufen?

Ich habe ein Verzeichnis auf einem Windows 2000 Server
C: \ WINNT \ Temp füllt sich mit Dateien wie:
70618199
21834082

Sie sind immer 121.201 KB groß.

Kann ich programmatisch den Programm- oder Dienstnamen "erfassen", der Dateien an diesem Ort ablegt?

MEHR INFO:
Ich habe darüber mehr geforscht. Ich habe die Datei TIFF umbenannt und konnte sie öffnen.
Dieser Computer funktioniert über eine benutzerdefinierte geschriebene ASP.NET-App als Dokumentsuchwerkzeug. Das Gerät enthält ca. 50.000 TIFF-Dokumente auf dem Laufwerk E: \. Auf diesem Computer wird auch SQL Server 2000 mit aktivierter Volltextindizierung ausgeführt. Volltextindizierung berührt in keiner Weise die TIFFs - aber es sollte nicht, weil das SQL richtig ist? FTS erfordert jedoch, dass der Indizierungsdienst aktiviert ist. Das seltsame Ding dieses TIFF scheint das größte Ding zu sein, das vom Webserver gedient wird. Verwendet IIS oder der Indexdienst C: \ WINNT \ Temp für eine Art Caching? Gedanken?

Lösung (möglicherweise?) Dies scheint Microsoft Indexing Service zu sein.
Wenn ich es herunterfahre, wird keine dieser Dateien in WINNT \ Temp erstellt.
Es scheint die größte gefundene Datei zu finden und kopiert sie in WINNT \ Temp. Das ist seltsam. Wenn Sie mit einer 100 MB + TIFF-Datei arbeiten, kann dies dazu führen, dass Sie nicht mehr genügend Speicherplatz haben. Sehr nervig.
Ich denke, ich werde einfach den Zweig "Web" meiner Indizierungsdienste herunterfahren.


Answer #1

Die einzige Methode, die ich von .NET programmatisch gefunden habe, ist die Befehlszeile-Handle-App von Sysinternal auszuführen und den Dateinamen zu übergeben und die Konsolenausgabe zu lesen, um die Quellanwendung mit einem offenen Handle der Datei abzufangen.

Sonst wären die anderen erwähnten Hilfsmittel gut.


Answer #2

Es gibt immer einen Prozessmonitor, der FileMon ersetzt, der Ihnen sagt, welcher Prozess auf die fraglichen Dateien zugreift.


Answer #3

Sie könnten dieses Verzeichnis immer auf "schreibgeschützt" setzen und sehen, was hochgeht. Auch wenn es ein Dokumentenserver ist, möchten Sie das vielleicht nicht tun.


Answer #4

Wenn Sie eine ähnliche Funktion wie die Fixiereinheit für Windows haben möchten, können Sie den Process Explorer aufrufen

Sie können keine Datei sehen, aber Sie können sehen, ob aktuell laufende Prozesse auf dieses temporäre Verzeichnis zugreifen und ähnliche benannte temporäre Dateien erstellen.


Answer #5

Verwenden Sie einfach Win32 API (NAPI).

Siehe Adv. Win32-API-Neuigkeiten: //comp.os.ms-windows.programmer.win32 für Quellcode (C)





filesystemwatcher