Seite 2 von 3

Verfasst: 18.04.2006 17:10
von AND51
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.

Verfasst: 18.04.2006 17:11
von Karl
Ich glaube so:

Solange die Datei gebraucht wird, darf sie weder geöffnet oder beschrieben werden. Der Zugriff wird dann verweigert.

Verfasst: 18.04.2006 17:18
von uweb
Nun glaube ich doch, daß mit meiner geistigen Fitness alles in Ordnung ist.
<)

Vermutlich haben wir unterschiedliche Betriebssysteme.
Bei mir wird gesperrt.
Während mein Beispiel läuft kann das gleiche Programm oder z.B. Wordpad die Datei nicht öffnen.
Ich arbeite mit Win2000 SP4.

Verfasst: 18.04.2006 17:58
von Karl
Also bei mir kann ich problemlos öffnen. (XP SP2)

Verfasst: 19.04.2006 00:52
von AND51
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.

Das mit dem Sperren von Dateien ist nicht so einfach...

Verfasst: 19.04.2006 04:20
von aspicza
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

Verfasst: 19.04.2006 07:26
von Sylvia
@And51:
Um deinen exklusiven Zugriff zu wahren, kannst du ja für diese
kurze Zeit die Datei UMBENENNEN um sie für andere Programme
unsichtbar zu machen.

Ach herje, jetzt habe ich ja schon wieder etwas gepostet. Egal...
wenn ich damit jemandem helfen konnte. Und weg.

Verfasst: 19.04.2006 08:09
von Karl
@Sylvia:

Man könnte es als eine Schwäche auffassen.

Gruß Karl

Verfasst: 19.04.2006 13:05
von AND51
Sylvia hat geschrieben:Ach herje, jetzt habe ich ja schon wieder etwas gepostet.
Karl hat geschrieben:Man könnte es als eine Schwäche auffassen.
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.

Ich denke, ich werde dann die Datei einfach umbenennen! Danke für eure Hilfe! :allright:

Verfasst: 19.04.2006 17:49
von mk-soft
Habe mal in der MSDN gesucht:

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", "","")
Vielleicht könnt ihr damit was anfangen

FF :wink: