Discussion:
Dateiüberwachung (wer macht wann die Datei auf)
(zu alt für eine Antwort)
Werner A. Schließmann
2005-06-30 09:18:01 UTC
Permalink
Hallo und guten Tag,

ich suche nach einer Idee, wie man eine Dateiüberwachung im vb.net
realisieren kann. Hintergund ist, dass auf einem Rechner zwei Dateien immer
wieder gesperrt sind, wenn meine Anwendung darauf zugreift. Dies abzuwarten
oder abzufangen ist eine Sache, aber ich würde gerne wissen, wer das ist. Da
der Effekt nur ab und zu auftritt (1-2 Tage) möchte ich ein Programm
schreiben, dass entweder die Dateien oder aber die Prozesse überwacht und bei
Zugriff auf die beiden Dateien eine LOG-Datei schreibt.

Wäre super, wenn mir jemand einen Tip geben könnte.

Mit freundlichen Grüßen

Werner
Lars Breiter
2005-06-30 09:57:02 UTC
Permalink
Hallo Werner,
für das gibt es den IO.FileSystemWatcher. Aus einer Doku habe ich folgendes
Beispiel:

Module Module1
WithEvents fsw as IO.FileSystemWatcher

Sub Main
fsw = new IO.FileSystemWatcher(IO.Path.GetTempPath)
fsw.enableRaisingEvents = true
end Sub

Dann über Prozeduren wie z. B.

Public Sub fsw_changed(ByVal sender as Object, ByVal e as
System.IO.FileSystemEventArgs) Handles fsw.changed
'hier code der ausgeführt werden soll
End Sub

End Module

das File überwachen. Falls Du nur eine bestimmte Datei überwachen willst,
musst Du noch die Filter-Eigenschaft einstellen.

Gruß
Lars Breiter
Post by Werner A. Schließmann
Hallo und guten Tag,
ich suche nach einer Idee, wie man eine Dateiüberwachung im vb.net
realisieren kann. Hintergund ist, dass auf einem Rechner zwei Dateien immer
wieder gesperrt sind, wenn meine Anwendung darauf zugreift. Dies abzuwarten
oder abzufangen ist eine Sache, aber ich würde gerne wissen, wer das ist. Da
der Effekt nur ab und zu auftritt (1-2 Tage) möchte ich ein Programm
schreiben, dass entweder die Dateien oder aber die Prozesse überwacht und bei
Zugriff auf die beiden Dateien eine LOG-Datei schreibt.
Wäre super, wenn mir jemand einen Tip geben könnte.
Mit freundlichen Grüßen
Werner
Thomas Scheidegger [MVP]
2005-06-30 10:00:36 UTC
Permalink
Hallo Werner
Post by Werner A. Schließmann
ich suche nach einer Idee, wie man eine Dateiüberwachung im vb.net
in .NET dabei:
FileSystemWatcher

(entspricht Win32: ReadDirectoryChangesW -> MSDN)
Post by Werner A. Schließmann
oder abzufangen ist eine Sache, aber ich würde gerne wissen, wer das ist.
mit Win32 (oder gar .NET) alleine ist AFAIK nicht feststellbar,
welcher Prozess/User eine Datei öffnet!
Ausnahme:
Falls Datei via Netzwerk-Freigabe geöffnet wurde,
dann Win32: NetFileEnum
(somit .NET PInvoke nötig)
http://groups.google.de/group/microsoft.public.de.german.entwickler.dotnet.vb/browse_frm/thread/dc3c70e266467392/e983500de1413b7f


Alles weitere braucht einen sehr speziellen (undokumentierte APIs!)
Kernel-Device-Driver, etwas wie in
http://www.sysinternals.com/Utilities/Filemon.html


Möglicherweise kann man etwas ähnliches mit dem 'normalen' (-> Windows-Handuch, MSDN)
NTFS 'Auditing' machen (schreibt Event-Log Einträge).
(zu auditing gibt es aber [noch?] kein .NET Support)
--
Thomas Scheidegger - MVP .NET - 'NETMaster'
http://www.cetus-links.org/oo_dotnet.html - http://dnetmaster.net/
Arne Janning
2005-06-30 10:04:54 UTC
Permalink
Hallo Werner!
Post by Werner A. Schließmann
ich suche nach einer Idee, wie man eine Dateiüberwachung im vb.net
realisieren kann. Hintergund ist, dass auf einem Rechner zwei Dateien immer
wieder gesperrt sind, wenn meine Anwendung darauf zugreift. Dies abzuwarten
oder abzufangen ist eine Sache, aber ich würde gerne wissen, wer das ist.
Geht wohl nur über Low-Level-Treiber-Programmierung.

Vergleiche:

http://groups.google.to/groups?threadm=OBSvSYMTFHA.3848%40TK2MSFTNGP10.phx.gbl

Gruß

Arne Janning

Loading...