Datei sperren?

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

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

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

Ich glaube so:

Solange die Datei gebraucht wird, darf sie weder geöffnet oder beschrieben werden. Der Zugriff wird dann verweigert.
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag 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.
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

Also bei mir kann ich problemlos öffnen. (XP SP2)
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

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

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
aspicza
Beiträge: 11
Registriert: 18.04.2006 07:23
Kontaktdaten:

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

Beitrag 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
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag 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.
Basic Pur = PureBasic
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Beitrag von Karl »

@Sylvia:

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

Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

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

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag 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:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten