Datei sperren?
Datei geöffnet lssen schützt nur vor dem löschen der Datei, diese kann aber weiterhin durch fremden Zugriff verändert werden, was ich zu verhindern nicht vermag.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Eben,. und deshalb wollte ich wissen, ob/wie ich diese Funktion aus CGI/Perl "importieren" kann, die mir ja ermöglicht, eine Datei zu sperren, gegen Löschen und beschreiben. Das muss auf WIndows gehen, da es ja auch Perl-Interpreter für WIndows gibt.
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Das mit dem Sperren von Dateien ist nicht so einfach...
Hallo!
Dei Funktion flock() in Perl oder PHP funktioniert auch nur, wenn der Webserver auf bestimmten Betriebsystemen / Dateisystemen läuft. flock() in PHP auf Windows Rechnern funktioniert zum Beispiel gar nicht!
Ein EXKLUSIVER Zugriff auf eine Datei ist zwar prinzipiell möglich, jedoch muss die verwendete Routine für jedes Betriebsystem / Dateisystem eigens programmiert werden bzw. vorhanden sein. Eine Routine für ALLE gibt es nicht.
Es gibt nur zwei Möglichkeiten: Entweder - wie schon einige Antworten vorher erwähnt - benutzt man die gängige Methode einen Dummy zu erstellen (z.B. leere Datei oder Eintrag in eine Datenbank), um damit zu signalisieren, dass eine bestimmte Datei exklusiv geöffnet wurde
oder
man programmiert sich passend zu dem Betriebsystem / Dateisystem eigene Routinen, die aber seeeeeeehr hardwarenah programmiert werden und tief in den Kern eines Systems gesetzt werden müssen.
Bei der ersten Möglichkeit besteht der Nachteil, dass Drittproramme diesen "Schutz" einfach umgehen können und bei der zweiten Möglichkeit ist meistens der Aufwand zu hoch.
SG
Arndt
Dei Funktion flock() in Perl oder PHP funktioniert auch nur, wenn der Webserver auf bestimmten Betriebsystemen / Dateisystemen läuft. flock() in PHP auf Windows Rechnern funktioniert zum Beispiel gar nicht!
Ein EXKLUSIVER Zugriff auf eine Datei ist zwar prinzipiell möglich, jedoch muss die verwendete Routine für jedes Betriebsystem / Dateisystem eigens programmiert werden bzw. vorhanden sein. Eine Routine für ALLE gibt es nicht.
Es gibt nur zwei Möglichkeiten: Entweder - wie schon einige Antworten vorher erwähnt - benutzt man die gängige Methode einen Dummy zu erstellen (z.B. leere Datei oder Eintrag in eine Datenbank), um damit zu signalisieren, dass eine bestimmte Datei exklusiv geöffnet wurde
oder
man programmiert sich passend zu dem Betriebsystem / Dateisystem eigene Routinen, die aber seeeeeeehr hardwarenah programmiert werden und tief in den Kern eines Systems gesetzt werden müssen.
Bei der ersten Möglichkeit besteht der Nachteil, dass Drittproramme diesen "Schutz" einfach umgehen können und bei der zweiten Möglichkeit ist meistens der Aufwand zu hoch.
SG
Arndt
Sylvia hat geschrieben:Ach herje, jetzt habe ich ja schon wieder etwas gepostet.
Bitte keine Sticheleien! Ich habe keine Lust, dass alles wieder von vorn losgeht und außerdem ist es doch ganz nett, wenn Sylcia wieder mal was postet.Karl hat geschrieben:Man könnte es als eine Schwäche auffassen.
Ich denke, ich werde dann die Datei einfach umbenennen! Danke für eure Hilfe!

PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
Habe mal in der MSDN gesucht:
Vielleicht könnt ihr damit was anfangen
FF
Code: Alles auswählen
; BOOL LockFile(
; HANDLE hFile,
; DWORD dwFileOffsetLow,
; DWORD dwFileOffsetHigh,
; DWORD nNumberOfBytesToLockLow,
; DWORD nNumberOfBytesToLockHigh
; );
;
;
; BOOL UnlockFile(
; HANDLE hFile,
; DWORD dwFileOffsetLow,
; DWORD dwFileOffsetHigh,
; DWORD nNumberOfBytesToUnlockLow,
; DWORD nNumberOfBytesToUnlockHigh
; );
;
File.s = OpenFileRequester("Sperren","","", 0)
If File
hFile = OpenFile(0, File)
If hFile
size = FileSize(File)
result = LockFile_(hFile, 0, 0, FileSize(File),0)
Else
End
EndIf
Else
End
EndIf
InputRequester("Wait", "","")
FF

Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive