Liste geöffneter Dateien?
-
Moin
sieh dir das mal an.
Ist zwar delphi, aber der Ansatz ist der gesuchte.
Suchbegriff ist : FILE_NOTIFY_CHANGE_LAST_ACCESS
-
So, danke für Eure Hilfe, aber ich verfolge mittlerweile einen neuen Weg.
Der Ansatz liegt darin, mit CreateToolhelp32Snapshot eine Liste der laufenden Prozesse einzulesen und irgendwie an die von diesen Prozessen verwendeten File-Handles zu kommen. Aus denen kann ich dann die Filenamen extrahieren und bin da, wo ich hinwollte... Wie das genau funktioniert, werde ich im API-Forum noch herausbekommen
-
Das ganze funktioniert halt nicht mit Netzwerkzugriffen...
Warum machst Du keinen File-System-Filter-Driver?
-
Wo ist das Problem mit Netzwerkzugriffen? Und was genau meinst Du mit "File-System-Filter-Driver"?
-
Wenn Du eine Liste der Prozesse durchgehst und dann da alle Files, bekommst Du ja nur die Dateien raus, welche von Prozesses auf dem lokalen Rechner geöffnet sind. Wenn aber ein Prozess auf einem anderen Rechner via Freigabe eine Datei auf Deinem Rechner aufgemacht hat, dann bekommst Du das so nicht raus...
Was ist mit "File System Filer Driver" meine; na vermutlich ein "File System Filter Driver": http://www.microsoft.com/whdc/driver/filterdrv/default.mspx
Der hängt sich in den Zugriff auf die Dateien ein....
Du musst es aber bestellen (kostet 109 gekostet!): http://www.microsoft.com/whdc/devtools/ifskit/ServerIFSKitOrderinfo.mspx
-
Klingt gut, darf aber nix kosten
Das Problem mit den Netzwerkzugriffen ist in meinem Fall nicht so dramatisch, das Programm soll mehr eine Hilfe für mich darstellen, alle Änderungen an bestimmten Dateien in einer Datenbank zu protokollieren...
Andererseits wäre es auch nett, zu erkennen, ob jemand anders was an der Datei geändert hat.
Wann wird denn FILE_NOTIFY_CHANGE_LAST_ACCESS ausgelöst? Schon beim Öffnen der Datei, oder erst beim Schließen?
-
Warum verwendest Du nicht NTFS... da kannst Du die Protokillierung aktivieren (genauer gesagt das Journal). Das kannst Du dann auch auslesen...
Siehe: http://www.microsoft.com/msj/1099/journal2/journal2.aspx
Alternativ kannst Du natürlich die Überwachungen des OSes nutzen...
-
Muß ohl übers OS laufen, da die Dateien, um dies es geht, auf einem internen Linux-Server liegen.
Jochen, Dein vorletztes Posting klang so, als ob Du wüßtest, wie das mit dem auslesen der Handles eines Prozesses funktioniert...?
-
-
Danke für den Quellcode, da kommen wir glaub ich der Sache schon näher
Allerdings mag mein Rechner das Projekt nicht linken, weil ihm angeblich die ntdll.lib fehlt. Sollte doch aber auf einem normalen XP-System vorhanden sein, oder?
-
Die ntdll.lib ist normalerweise nur im DDK vorhanden! Die Funktionen darauf sollten eingelich via LoadLibrary/GetProcAddress geholt werden!
-
Also wenn ich das richtig sehe, ist das DDK ziemlich teuer. Hab ich gar keine chance, ohne diese ntdll.lib an die benötigten Funktionen zu kommen? Im source bin ich gar nicht dahinter gestiegen, welche Programmteile überhaupt darauf zugreifen.
Verflixt, das muß doch irgendwie gehen...