![]() |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Hai Nico,
eine Frage habe ich noch ;-) Ich habe in deiner Funktion des Result-Type auf Integer geändert und im Code dann geschrieben:
Delphi-Quellcode:
Dadurch kann ich etwas "leichter" die Fehler auflösen:
begin
Result := -1; . . if AccessCheck(SecurityDescriptor, ClientToken, AccessMask, GenericFileMapping, PrivilegeSet, PrivilegeSetLength, GrantedAccess, AccessStatus) then begin // Result := AccessStatus; Result := GetLastError end; . .
Delphi-Quellcode:
Ist das Okay so oder ist da noch eine Falle in meinem Code?
procedure TForm1.btn_Button1Click(Sender: TObject);
var pfad: string; begin pfad := edt_Edit1.Text; case CheckAccessToFile(GENERIC_WRITE, pfad) of -1: begin ShowMessage('Fehler beim Ausführen') end; NO_ERROR: begin ShowMessage('Alles Okay') end; ERROR_ACCESS_DENIED: begin ShowMessage('Zugriff verweigert') end; ERROR_LOGON_FAILURE: begin ShowMessage('Fehler bei der Anmeldung') end; end; end; |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Jupp, der Benutzer könnte das Verzeichnis zwar auswähen aber nicht die Sicherheitsbeschreibungen lesen können (wenn ich noch länger darüber nachdenke fällt mir bestimmt noch mehr ein *g*).
Ich würde es so lassen (Boolean). Was spricht gegen:
Delphi-Quellcode:
ps: wo ist dein else ?-)
if not CheckAccessToFile(...) then
case GetLastError of ERROR_TOO_STUPID, ERROR_GO_WINDOWS, ERROR_DROP_DEAD: //... end; pps: dein Code kann ohnehin nicht sicher funktionieren (zumindest nicht so wie du es erwartest), da im Erfolgsfalle 'LastError' nicht gesetzt wird... |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Zitat:
Zitat:
Zitat:
Aber wie schon gesagt: Ich mache so wie von Dir vorgeschlagen. |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Hi,
nochmal zum Test von Netzlaufwerken. Ich habe eine Freigabe unter XP (Zugriff: \\rechner\freigabe\ Berechtigungen: Jeder->Lesen) gemacht und die mit CheckAccessToFile() und FILE_GENERIC_WRITE getestet. Jetzt gibt mir die Funktion aber True zurück, wie kann das sein? :? Gruß |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Zitat:
|
Re: Wer hat welche Berechtigungen in einem Verzeichnis
1. Freigabe ist auf einem Nachbarrechner (\\eg01\testfreigabe) mit Windows XP.
2. Der Aufruf ist wie gehabt:
Delphi-Quellcode:
ShowMessage(BoolToStr(CheckAccessToFile(FILE_GENERIC_WRITE, '\\eg01\testfreigabe'), True) + ': ' + SysErrorMessage(GetLastError)); |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Wenn ich die Funktion mit einer Windows 2000 Freigabe teste (Berechtigung: Nur lesen) fliegt er schon bei GetFileSecurityW() mit "Zugriff verweigert" raus, was wahrscheinlich auch richtig so ist.
Nur warum liefert mir Windows XP falsche Werte ? |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Wie ist der Rückgabewert wenn Du GENERIC_WRITE verwendest?
(gibt es sonst irgendwelchen Besonderheiten? Domäne vs Arbeitsgruppe, admintrativer Account, usw) |
Re: Wer hat welche Berechtigungen in einem Verzeichnis
Was für ein XP? Home oder Professinal?
|
Re: Wer hat welche Berechtigungen in einem Verzeichnis
@NicoDE:
Zitat:
Werte ich jetzt noch die Rückgabe GrantedAccess von AccessCheck() in CheckAccessToFile() aus, bekomme ich für GENERIC_WRITE mein False. Das sollte es doch sein oder ? :gruebel: Zitat:
- Admin-Account (Administrator) @Luckie Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz