Seite 1 von 1

ReadOnly Rechte setzen?

Verfasst: 04.12.2006 16:38
von DNA
Ich hab folgendes Problem:

Ich nutze PB 4.0 + Update und WinXP (Home)

Ich möchte eine Datei auslesen, mit welchem Befehl ist relativ egal, jedoch nutze ich so wie es sein sollte den Befehl ReadFile.
Der Benutzer hat auch die Rechte um diese Datei zu öffnen und zu lesen.
Ich hab damals eine Anwendung mit VB geschrieben, mit der das ebenfalls funktioniert, jedoch funktioniert es nicht, wenn ich es über PureBasic versuche.

Gibt es da einen bestimmte Token oder sonst was, den ich per API setzen muss um die jeweiligen Rechte zu bekommen, so wie es z.B. mit dem Runterfahren von NT-Versionen ist? Dort muss man auch zuerst einen Token setzten wenn man keine Admin Rechte hat.

Die Attribute der Datei sind alle gesetzt, also: Schreibgeschützt, Versteckt, Archiv, Komprimiert und System.
Doch weder lesen kann ich die Datei durch eine PB Anwendung, noch die Attribute ändern. Wie gesagt, kann ich die Datei mit einer VB Anwendung lesen.

Verfasst: 07.12.2006 19:20
von PBZecke
PB sollte auch schreibgeschützte Dateien öffnen können. Solltest mal den
code zeigen, der die Datei öffnet. Da wird wohl ein Fehler drin sein.

Verfasst: 11.12.2006 12:34
von DNA
Als Admin funktioniert das ganze, jedoch bringt mir das nichts. Ich muss die datei auch auslesen können, wenn ich keine Admin rechte habe.

Aber damit PBZecke glücklich ist, setzte ich hier mal den Code rein:

Code: Alles auswählen

Procedure.s Laden(File.s)
  If ReadFile(0, File)
    MessageRequester("Laden", "Datei geöffnet")
    Protected Length.l = Lof(0)
    If Length < 1
      MessageRequester("Laden", "Warum ist die länge < 1 ???")
      ProcedureReturn ""
    EndIf
    MessageRequester("Laden", "alles okay")
    Protected *Address = AllocateMemory(Length)
    ReadData(0,*Address, Length)
    CloseFile(0)

    Protected target.s = Space(Length)
    CopyMemory(*Address,@target, Length)

    FreeMemory(*Address)
    ProcedureReturn target
  Else
    MessageRequester("Laden", "konnte Datei nicht öffnen")
  EndIf
EndProcedure

Verfasst: 13.12.2006 13:37
von Shardik
Ich habe die Prozedur Laden() getestet und sie läuft bei mir unter WinNT SP6 und WinXP Pro SP2 absolut problemlos. Beim Test hatte meine Testdatei C:\Test.Txt ebenfalls alle Attribute gesetzt (RHSAC: Read only, Hidden, System, Archive und Compressed) und sowohl der lokale Zugriff als auch der Remote-Zugriff über eine Netzwerkfreigabe laufen einwandfrei... :freak:
Allerdings war ich auch als Administrator angemeldet. Kann es sich vielleicht um ein Berechtigungsproblem handeln?

Verfasst: 13.12.2006 13:58
von DNA
Also, ich hab das ganze schon mal mit VB programmiert und damit funktioniert das Auslesen und da hab ich nichts mit Rechten ändern oder sonst was gemacht. Und der Benutzer hat auch die Rechte die Datei zu lesen, jedoch funktioniert das irgendwie nicht mit dem was ich über PB gemacht habe. Deshalb hab ich mir gedacht, vielleicht muss ich doch irgendwelche Privilegien oder Token setzten oder was auch immer um das lesen zu können.