Entwickler-Ecke

Sonstiges (FPC / Lazarus) / Linux API - Auf Schreibrechte in einem Verzeichnis prüfen


TheNameless - Do 05.10.06 23:02
Titel: Auf Schreibrechte in einem Verzeichnis prüfen
Hab ne kleine Frage:
Gibt es eine Funktion mit der man prüfen kann, ob man in einem Verzeichnis Schreibrechte hat?
Sollte unter Linux und Windows laufen, da ich das Programm für beide Platformen entwickle.


daPimP - Fr 06.10.06 01:08

Die einfachste Variante wäre die Probe!

Eine leere Datei versuchen zu erstellen - wenns nicht klappt sind auch keine Rechte verfügbar.

Wenig Aufwand - große Wirkung.


Quake User - Fr 06.10.06 02:04

Das Mittel der Wahl währe:
- in das Verzeichnis schreiben
- und ggf. die exception behandeln


TheNameless - Fr 06.10.06 15:33

Ja so ähnlich hab ichs bis jetzt auch gelöst, dachte vielleicht gibt es eine elegantere Lösung, sodass man den Benutzer schon beim Verzeichnis auswählen darauf hinweisen kann...


Quake User - Fr 06.10.06 18:01

user profile iconTheNameless hat folgendes geschrieben:
Ja so ähnlich hab ichs bis jetzt auch gelöst, dachte vielleicht gibt es eine elegantere Lösung, sodass man den Benutzer schon beim Verzeichnis auswählen darauf hinweisen kann...


definiere: "auswählen"


BTW: wird dadurch kein bischen besser. Der Nutzer hat trotzdem eine Fehlermeldung.
WENN müsste der Nutzer NUR die Verzeichnisse sehen, auf die er Rechte hat.
Das währe also sein Homedir.
Es ist also eher die Frage, ob sein Rechner "elegant" eingerichtet ist.


Marco D. - Fr 06.10.06 21:18


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function IsDirWritable(Dir: string): boolean;
var stream: TFileStream;
begin
  try
    stream := TFileStream.Create(Dir+'\dummy.dat',fmCreate);
    result := true;
    FreeAndNil(stream);
    DeleteFile(Dir+'\dummy.dat');
  except
    result := false;
    FreeAndNil(stream);
  end;
end;

Würde das so funktionieren, oder ist das so nicht richtig? :gruebel:


jakobwenzel - Fr 06.10.06 21:24

Ich würd noch die Spuren beseitigen (sprich: Die Datei wieder löschen)


Marco D. - Fr 06.10.06 21:30

user profile iconjakobwenzel hat folgendes geschrieben:
Ich würd noch die Spuren beseitigen (sprich: Die Datei wieder löschen)

Schau mal, das macht er doch schon. ;)


TheNameless - Sa 07.10.06 22:08

Danke für die Funktion, ist wohl die beste wenn es keine andere möglichkeit gibt

Zitat:
WENN müsste der Nutzer NUR die Verzeichnisse sehen, auf die er Rechte hat.
Das währe also sein Homedir.
Es ist also eher die Frage, ob sein Rechner "elegant" eingerichtet ist.

Es ist ja nicht nur auf Linux bezogen unter Windows gibt es ja auch Rechte.

BTW: Gibt es eine Variable HomeDir oder ähnlich bei Kylix(!)?


Quake User - So 08.10.06 02:23

user profile iconTheNameless hat folgendes geschrieben:
Danke für die Funktion, ist wohl die beste wenn es keine andere möglichkeit gibt

Zitat:
WENN müsste der Nutzer NUR die Verzeichnisse sehen, auf die er Rechte hat.
Das währe also sein Homedir.
Es ist also eher die Frage, ob sein Rechner "elegant" eingerichtet ist.

Es ist ja nicht nur auf Linux bezogen unter Windows gibt es ja auch Rechte.



Eben, und darum würde ich das komplett weg lassen und das Windows so einrichten, das der Nutzer Verzeichnisse nicht wählt, in der er auch nicht schreiben kann.


TheNameless - Do 12.10.06 19:22

Naja der User soll auch halt selbst wählen können welches Verzeichnis er schreiben will (muss er zwar nicht), da die Daten schon ein paar MB wegnehmen.