Ordner überwachen
-
Also mein Ziel ist es einfach eine Datei zu verschieben, die von einem bestimmten Programm erstellt wird und anschließend auch geöffnet wird!
Doch wenn das Programm diese Datei öffnet, kann ich die Datei ja nicht verschieben und das möchte ich gerne irgendwie schaffen, also das der Zugriff von dem Programm auf die Datei unterbrochen wird und ich die Datei verschieben kann...
-
Und das "bestimmte Programm" kannst Du sicherlich nicht verändern, oder?
Bist Du Dir sicher, dass die Datei nach dem erstellen geschlossen wird? Dann wäre es aber ein blödes "bestimmtes Programm", wenn sie die Datei schliesst und sofort wieder aufmacht...
Du könntest natürlich auch nur den "CreateFile" aufruf des "bestimmten Programmes" abfangen und dann dies dort verhindern. Dazu musst Du eine DLL in den Prozes seinschleussen und dann CreateFileW hooken...
-
Jo also ich gehe mal sehr davon aus, dass dieses Programm auf die Datei dann erst später zugreift...
Klar wäre es auch anders möglich aber ich denke mal, das es das so macht.
Mir wäre es also erstmal ausreichend, das wenn ich einfach das openfile hooken kann(und wie geht das dann genau?) oder kann ich nicht einfach irgendwie den Handle herrausfinden, von dem Zugriff und diesen dann terminieren?
-
Kann man bei WinXP oder so nicht ne Kopie via Volumenschattenkopie ziehen oder so? (hab keine Ahnung ;D)
-
TheCaleb schrieb:
Jo also ich gehe mal sehr davon aus, dass dieses Programm auf die Datei dann erst später zugreift...
Na, dann schau doch einfach mal mit dem FileMon nach!
geeky schrieb:
Kann man bei WinXP oder so nicht ne Kopie via Volumenschattenkopie ziehen oder so? (hab keine Ahnung ;D)
Das wäre natürlich eine Möglichkeit: Du kannst einfach ein Backup der Datei erstellen (CreateFile mit FILE_FLAG_BACKUP_SEMANTICS und dann BackupRead)
Oder natürlich vis VSCS (Volume Shadow Copy Service); ist aber etwas komplexer
-
Und was ist mit MoveFileEx MOVEFILE_DELAY_UNTIL_REBOOT?
-
Danke für die vielen Ideen aber das ist nicht so ganz mein Ziel!
Ich möchte gerne so ähnlich, wie das Programm Unlocker auf http://ccollomb.free.fr/unlocker/ es einfach schaffen, dass die Datei von dem einen Programm nicht mehr zugegriffen wird und ich so die Datei verschieben kann.
Dies würde ich gerne während des Betriebes von Windows und des einen Programmes machen.
Es geht mir nicht da drum, genauso wie Unlocker den Handle zu terminieren, oder wie auch immer, sondern einfach es irgendwie zu schaffen, die Datei zu verschieben, sobald sie erstellt wurde.
-
Gibt es vielleicht eine Möglichkeit herraus zu finden, von welchem Handle eine Datei gerade verwendet wird, wenn man sie öffnen möchte??
-
Nein! Man weiß nur, dass sie geöffnet ist!
Office legt dazu eine speziele Datei an um diese Informationen weitergeben zu können.
-
Ah ich habe gerade gesehen, dass ich mit dem Unlocker auch aus der von CMD ausführen kann, das dürfte mir helfen.