Dateien kopieren, obwohl sie grad verwendet werden?

Anfängerfragen zum Programmieren mit PureBasic.
ChrisBa
Beiträge: 50
Registriert: 22.07.2006 12:14

Dateien kopieren, obwohl sie grad verwendet werden?

Beitrag 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
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

nö.
und das ist Absicht.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
ChrisBa
Beiträge: 50
Registriert: 22.07.2006 12:14

Beitrag von ChrisBa »

es muss doch irgendwie gehen
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

ChrisBa hat geschrieben:es muss doch irgendwie gehen
Klar, schreibste nen Treiber, installierst als Systemdienst und dann geht
das auch :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
gnasen
Beiträge: 578
Registriert: 01.08.2007 14:28
Computerausstattung: PB 4.60

Beitrag 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?
DarkDragon
Beiträge: 6267
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag 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
Zuletzt geändert von DarkDragon am 23.06.2008 16:04, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag 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:
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten