![]() |
Geöffnete bzw. gesperrte Datei kopieren
Hallo,
so jetzt wird es mal richtig schwierig :) Wie kann ich geöffnete bzw. vom System gesperrte Dateien kopieren ??? Bsp: Eine Anwendung öffnet eine Datei im Modus fmShareExclusive eine zweite Anwendung soll diese geöffnete Datei aber kopieren! Im vorraus schon mal danke Bauerle |
Re: Geöffnete bzw. gesperrte Datei kopieren
erstmal: garnicht. du könntest irgendwie ermitteln, welches Programm die Datei verwendet, das abwürgen und es dann nochmal versuchen... nicht besonders elegant. Dann kannst du die Datei beim nächsten Hochfahren (reboot) von Windows kopieren. Es kann allerdings auch sein dass die Datei nur für den Schreibzugriff gesperrt ist (wie z.B. EXE-Datei). Dann machst du das so:
Delphi-Quellcode:
var
f,t:file of byte; buf:array[1..4096] of byte; copied:integer; begin assignfile(f,fromfilename); filemode:=0; //nur für readaccess öffnen reset(f); filemode:=1; assignfile(g,tofilename); rewrite(g); while copied>0 do begin blockread(f,buf,4096,copied); blockwrite(g,buf,copied); end; closefile(g); closefile(f); filemode:=2; end; |
Re: Geöffnete bzw. gesperrte Datei kopieren
Hallo,
wenn du schon solche Bastellösungen vorschlägst, dann nimm bitte für Filemode die vordefinierten Konstanten.
Delphi-Quellcode:
Rainer
Konstante Definition
fmCreate Wenn die Datei bereits vorhanden ist, wird sie für den Schreibzugriff geöffnet, ansonsten wird eine neue Datei angelegt. Im Gegensatz zu den anderen Konstanten, die in der Unit SysUtils deklariert sind, ist diese Konstante in der Unit tge classes deklariert. fmOpenRead Nur Lesezugriff. fmOpenWrite Nur Schreibzugriff. fmOpenReadWrite Lese- und Schreibzugriff. fmShareCompat Kompatibel zu dem Verfahren, mit dem FCBs geöffnet werden. Verwenden Sie diesen Modus nicht in plattformübergreifenden Anwendungen. fmShareExclusive Kein Lese- und Schreibzugriff. fmShareDenyWrite Kein Schreibzugriff. fmShareDenyRead Kein Lesezugriff. Verwenden Sie diesen Modus nicht in plattformübergreifenden Anwendungen. fmShareDenyNone Andere haben uneingeschränkten Zugriff. |
Re: Geöffnete bzw. gesperrte Datei kopieren
Hmm, ist nich gerade befriedigend !!!
Zitat:
Vielleicht ein Hardcopy direkt auf ner HDD ??? Ich bitte um weitere Vorschläge |
Re: Geöffnete bzw. gesperrte Datei kopieren
Zitat:
Zitat:
Ein möglicher Ansatz könnte bei ![]() Zitat:
|
Re: Geöffnete bzw. gesperrte Datei kopieren
@NicoDE
Aufwendig spielt keine Rolle Hauptsache es geht! Zitat:
ok, dein Ansatz ist nicht schlecht, reicht aber leider nicht aus um das Problem komplett zu lösen! Ist es nicht möglich eine genau kopie des Files in den Speicher zu laden und dieses dann zu schreiben??? (Versteht das jemand) |
Re: Geöffnete bzw. gesperrte Datei kopieren
Klick:
Delphi-Quellcode:
so hätte ich doch schonmal das entsprechende Handle oder ??
Findfirst('c:\pagefile.sys',faAnyFile,rec);
rec.win32.findhandle |
Re: Geöffnete bzw. gesperrte Datei kopieren
Zitat:
Stellt Dir vor, dass du gerade die Daten aus der 'Mitte' liest und sich während dessen der Inhalt am Anfang wieder ändert... Lies dir bitte mal den Abschnitt Volume Shadow Copy Service im Artikel ![]() Der wichtigste Teil: Zitat:
Zitat:
Gruß Nico edit2: ![]() |
Re: Geöffnete bzw. gesperrte Datei kopieren
um den zugriff auf die datei freizugeben, musst du einen treiber programmieren.
siehe ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz