Seite 1 von 2

Dateien kopieren, obwohl sie grad verwendet werden?

Verfasst: 23.06.2008 15:24
von ChrisBa
Hallo
ich bin grad dabei ein Programm zu schreiben. Das Problem ist, dass ich eine Datei von einem Ort zum anderen kopieren will. Diese Datei wird jedoch schon von einem anderen Programm verwendet. Selbst das normale kopieren mit der Maus funktioniert nicht.
Gibt es eine Möglichkeit, die Datei mit zu kopieren, obwohl sie rgad verwendet wird? (möchte nicht das Programm schließen damit die Datei nicht mehr verwendet wird und ich sie kopieren kann)

geht das?
danke schonmal im Voraus

Verfasst: 23.06.2008 15:24
von Kaeru Gaman
nö.
und das ist Absicht.

Verfasst: 23.06.2008 15:47
von ChrisBa
es muss doch irgendwie gehen

Verfasst: 23.06.2008 15:57
von ts-soft
ChrisBa hat geschrieben:es muss doch irgendwie gehen
Klar, schreibste nen Treiber, installierst als Systemdienst und dann geht
das auch :mrgreen:

Verfasst: 23.06.2008 16:00
von gnasen
Kurze Frage dazu: Wenn eine Datei auf der Festplatte liegt, sollte sie doch theoretisch auch zeitgleich gelesen werden können. Physikalisch kann schonmal nicht auf einen Wert doppelt zugegriffen werden (nur ein Lesekopf, der das entsprechende Byte erreicht).
In einer Art Header sollte es auch nicht stehen. Sollte der PC ausgehen und der Header nicht zurückgesetzt, wäre die Datei ja immer besetzt.

Hat Windows eine Art Liste, welche Dateien gerade geöffnet sind und vergibt schlicht keine weiteren Schreibrechte, oder wie soll man sich das genau Vorstellen?

Verfasst: 23.06.2008 16:03
von DarkDragon
gnasen hat geschrieben:Hat Windows eine Art Liste, welche Dateien gerade geöffnet sind und vergibt schlicht keine weiteren Schreibrechte, oder wie soll man sich das genau Vorstellen?
Ja, die Listen stehen im Prozesskontrollblock des jeweiligen Prozesses.

http://de.wikipedia.org/wiki/Prozesskontrollblock

Verfasst: 23.06.2008 16:04
von Kaeru Gaman
es ist eine der Kernaufgaben des Betriebssystems, den Zugriff auf Daten
und Dateien zu verwalten, und dazu gehört auch, dass auf eine von einem
Prozess geöffnete Datei kein anderer Prozess zugreifen kann.
das soll verhindern, dass es überschneidungen und durcheinander gibt.

Abhilfe gibt es da nur, wenn das eine Programm die Datei nicht offen hält,
sondern einlädt und dann wieder schließt, wie das z.b. IrfanView mit
den Bildern macht. Wenn du in Irfanview ein Bild öffnest,
kannst du das mit einem anderen Programm auch öffnen bzw. verschieben.

PS
> Wenn eine Datei auf der Festplatte liegt, sollte sie doch theoretisch auch zeitgleich gelesen werden können.
Wenn es sich nur um einen Lesezugriff handelt, hast du theoretisch recht, das wäre wünschenswert.
ob es unter Windows vorgesehen ist, weiß ich nicht.

Verfasst: 23.06.2008 16:07
von ts-soft
Das liegt an den Rechten, wenn die Datei sich nicht kopieren läßt, wurde sie
nicht als shared geöffnet. Dazu solltest Du Dir die CreateFile_() API ansehen

Verfasst: 23.06.2008 16:38
von Kaeru Gaman
... und wenn das andere Programm, das du nicht schließen willst und von
dem du nicht sagst, welches es ist, die Datei nicht shared öffnet, dann ist es
eben nicht möglich, von einem anderen programm aus darauf zuzugreifen.

Verfasst: 23.06.2008 21:52
von AND51
Ich habe mir nicht alles durchgelesen, wollte nur meinen Senf dazu abgeben:

Mit 7-Zip kann man auch Dateien komprimieren, die gerade zum Schreiben geöffnet sind.
Es gibt bei den Kompressionseinstellungen nänlich eine Option, die heißt "Zum Schreiben geöffnete Dateien mit einbeziehen".
Da 7-Zip recht klein ist (<1 MB) und Freeware und alles, glaube ich nicht, dass 7-Zip dazu irgendwelche Treiber benutzt.

Was ich damit nur sagen wollte war: Ich denke, es geht schon irgendwie, frag mich aber nicht, wie. :lol: