Hat Benutzer Schreibrechte (lokal/LAN)?
Hallo,
ich habe eine kleine Frage: Gibt es eine einfache Möglichkeit, herauszufinden, ob der aktuelle Windows-Benutzer Schreibrechte auf eine ausgewählte Datei hat? Sowohl lokal, als auch im Netzwerk? Danke im vorraus, MCXSC |
Re: Hat Benutzer Schreibrechte (lokal/LAN?)
Öffne sie mit TFileStream und Anforderung Schreizugriff und werte im Fehlerfall mit GetLastResult den Fehlergrund aus.
|
Re: Hat Benutzer Schreibrechte (lokal/LAN?)
Zitat:
Das ist zum Schreien komisch :D |
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Hallo,
ich stehe ebenfalls vor dem gleichen Problem, dass ich die Schreibrechte lokal als auch im LAN feststellen, bzw. prüfen muss. Ist das das einzigste, simpelste Lösung mit dem TFileStream oder gibt es noch was besseres? |
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Kuckst du hier, da sind auch Fuktionen um die Berechtigung für ein Verzeichnis auszulesen
|
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Zitat:
Ich denke du meinst die Procedure "CheckAccessToFile". Die hab ich hier schon gefunden. Nur scheint diese nur für lokale Schreibrechte zu gelten/funktionieren... |
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Man lese, was Nico dazu geschrieben hat:
Zitat:
|
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Zitat:
Deswegen ja auch die Frage nach einer Funktion zur Schreibrecht-Prüfung für Lokal UND lan |
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Und dann wäre da noch die Sache mit >=Vista und SecurityLevel, das im Code auch nicht geprüft wird. Letztendlich muss man die Datei zum Schreiben öffnen, um kurz Gewissheit zu haben.
|
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Ich hab den Beispielcode von Matze mal auf unser Netzwerk losgelassen, und er funktioniert so wie er soll. (XP)
Gruß K-H |
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
|
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Zitat:
|
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Hallo,
wärs dann nicht einfacher/besser die dreckige Version zu verwenden, indem man versucht eine Datei zu erzeugen, schlägt dies fehl dann weiss man (vermutet man) dass man keine Schreibrechte hat. |
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Folgender Code prüft, ob eine bestehende Datei beschreibbar ist:
Delphi-Quellcode:
Um zu prüfen, ob man in einem Verzeichnis eine neue Datei erzeugen kann,
function FileIsWriteable(const filename:string):Boolean;
var hnd: THandle; begin hnd := CreateFile(PChar(filename), GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); Result := hnd <> INVALID_HANDLE_VALUE; if Result then CloseHandle(hnd); end; also ob man Schreibrechte in einem Verzeichnis hat, muss man einfach versuchen eine Datei zu schreiben. Man sollte eine Dateiendung verwenden, die sonst nicht benützt wird (.tmp, .$$$). Wenn man Pech hat, kann man die temporäre Datei erzeugen, aber danach nicht mehr löschen. Das kommt aber relativ selten vor. |
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Also eigentlich sollte man es so machen. CreateFile hat doch noch irgendwo so ein temporary Flag, so dass die Datei gelöscht wird, sobald alle Handles geschlossen sind (bin zu faul zum suchen :-D ). Ich würde dann auch alle Share Attribute rausmachen, so dass kein anderer Prozess zwischendrin die Datei öffnen kann. Soll ja nur getestet werden, ob das geht. Gab es nicht auch noch ein Flag für zufällige Namen? (faul :-D )
Wenn das so gemacht wird, dann gibt es auch kein Problem mit dem Löschen, außer die Verbindung reißt ab. Obwohl selbst dann die Datei vom Server automatisch gelöscht werden sollte. Zitat:
|
AW: Hat Benutzer Schreibrechte (lokal/LAN)?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz