Ordner überwachen



  • nachdenken!



  • Ohne Informationen kann ich leider nicht irgendwie nen Weg dazu suchen!





  • Vielen Dank aber ich weiß schon, wie ich ermittel ob was in einem Ordner passiert, doch ich weiß leider nicht, wie ich eine Aktion blocken kann oder terminieren kann.
    Sprich ich möchte Dateien verschieben, die von einem Programm erstellt werden aber meistends sofort anschließend geöffnet und verwendet werden.
    Dieses öffnen möchte ich blockieren oder wenigstends terminieren können, sodass ich die dateien verschieben kann!



  • Mein Rat: Vergiss es!
    Mach es entweder mit ACLs oder lass es sein bzw. denk Dir was anderes für Dein *eigentliches* Problem aus!

    Was willst Du denn *eigenlich* machen?

    Falls das Programm managed ist, kannst Du AFAIK auch mit Code-Access-Securities was machen...



  • 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


  • Mod

    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??


  • Mod

    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.


Anmelden zum Antworten