![]() |
Ordnerzugriff besser machen?
Hallo,
ich hab z.B. "C:\PerfLogs" und wenn ich da mit FindFristFile usw. lesen will, bekomme ich Error 5 (Zugriff verweigert). Ich kann somit den Fehlercode entsprechend verarbeiten, die Anwendung nach wunsch vom Benutzer neu mit Adminrechten starten (Als Administrator ausführen) und dann gibt's kein Error 5 mehr und kann den Inhalt lesen. Alles gut. Jetzt habe ich noch "System Volume Information" (kennt ihr ja alle). Da gibt's auch Error 5 aber mit Adminrechten ebenfalls 5. Das hat natürlich so seinen Grund. Mich interessiert jetzt eigentlich weniger, dass ich da den Inhalt lesen kann, eher will ich einen Unterschied feststellen können. Also bevor ich die Anwendung mit Adminrechten neu starte, möcht ich wissen ob ein Ordner weiterhin 5 zurück gibt. So könnt man bei dem einem Ordner dem Benutzer wirklich die Möglichkeit anbieten die Anwendung mit Adminrechten neu starten zu lassen und bei dem anderen Ordner dem Benutzer nur mitteilen, dass auf den Ordner kein Zugriff erlaubt ist. Der Windows Explorer macht das ähnlich... bei PerfLogs hab ich die Möglichkeit und bekomme ein UAC Button und bei "System Volume Information" bekomme ich nur ne Info, dass ich da keinen Zugriffserlaubnis habe (ohne UAC Button). Wenn das nicht so einfach geht, wäre vielleicht noch die Möglichkeit da, zu prüfen ob die Anwendung schon mit Adminrechten läuft. So könnte man dann wenigstens im nachhinein die Benutzer die Info geben, dass auf dem Ordner mit Adminrechten ebenfalls kein Zugriff möglich ist. Zuvor wäre es aber besser, damit man nicht umsonst die Anwendung mit Adminrechten startet. Micha |
AW: Ordnerzugriff besser machen?
Wie lautet die Frage?
|
AW: Ordnerzugriff besser machen?
Die Rechtevergabe der Ordner unterscheidet sich voneinander.
Darüber könnte man abfragen, ob es mit anderen Rechten weitergehen könnte oder nicht? Weiterforschen eventuell hier: ![]() ![]() |
AW: Ordnerzugriff besser machen?
Scheint wohl nicht so einfach zu sein.
Ich habe jedenfalls was gefunden, um zu prüfen ob die Anwendung mit Admin Rechten läuft oder nicht
Code:
Das ist ja schon mal was. Vielleicht für den einen oder anderen auch brauchbar. So kann ich dann in meinem Fall bei "System Volume Information" oder auch bei anderen Ordnern die Error 5 (im Admin Modus) zurück liefern, dem Benutzer nur ne Info geben (Zugriff verweigert) und nicht die Frage "Anwendung mit Admin-Rechten neu starten?" hinterlassen. Die Frage "Anwendung mit Admin-Rechten neu starten?" halt nur beim ersten Mal, wenn die Anwendung noch nicht mit Admin-Rechten läuft. Wäre dann zwar 1x überflüssig aber im nachhinein dann wenigstens zu unterscheiden.
procedure TForm.Button1Click(Sender: TObject);
type TIsUserAnAdminFunc = function (): BOOL; stdcall; var Shell32DLL: THandle; IsUserAnAdminFunc: TIsUserAnAdminFunc; begin Shell32DLL := LoadLibrary('shell32.dll'); try if Shell32DLL <> 0 then begin @IsUserAnAdminFunc := GetProcAddress(Shell32DLL, 'IsUserAnAdmin'); if Assigned(@IsUserAnAdminFunc) then if IsUserAnAdminFunc then ShowMessage('Sie haben Adminrechte.') else ShowMessage('Keine Adminrechte.') end; finally FreeLibrary(Shell32DLL); end; end; @KodeZwerg Die Frage ist eigentlich "Also bevor ich die Anwendung mit Adminrechten neu starte, möcht ich wissen ob ein Ordner weiterhin 5 zurück gibt." Wie "Delphi.Narium" schon schrieb "Die Rechtevergabe der Ordner unterscheidet sich voneinander." Danke für die Links @Delphi.Narium. Da muss ich noch mal genau schauen. Micha |
AW: Ordnerzugriff besser machen?
Liste der Anhänge anzeigen (Anzahl: 1)
Zum Thema Admin-Rechte, ich pack Dir mal im Anhang eine, für mich jedenfalls, sehr geniale Unit rein, damit kannst Du auch zur Laufzeit ohne App-Neu-Start kurz für ne Aktion Dir die passenden Rechte einforden oder checken in was für einen Modus Deine App läuft, auch so ein tollen Schild-Button bekommst Du damit easy gebacken.
Seit dem ich die habe bin ich mit diesem Thema für mich durch, mehr brauche ich nicht. Viel Spaß damit, ein mini Beispiel wie man's verwendet legte der Erfinder bei. |
AW: Ordnerzugriff besser machen?
Meines Wissens ist "System Volume Information" der einzige Ordner der selbst durch Admin nicht geöffnet werden darf. Eine Abfrage des Ordnernamens dürfte also genügen.
Sherlock |
AW: Ordnerzugriff besser machen?
Wenn ein Benutzer/Programm keine Zugriffsrechte auf ein(e) Verzeichnis/Datei hat, könnte es sein, daß es dafür Gründe gibt.
Mit der Brechstange Administrator dann die Rechtevergabe auszuhebeln, halte ich für suboptimal. Eine Nachricht daß die nötige Zugriffsberechtigung fehlt, sollte ausreichend sein. Dann kann der Admin immer noch die notwendigen Berechtigungen erteilen. Gruß K-H |
AW: Ordnerzugriff besser machen?
Zitat:
Da wäre dann wenigstens ein 2. Start der Anwendung nicht nötig. Danke für's hochladen Micha |
AW: Ordnerzugriff besser machen?
Zitat:
Micha |
AW: Ordnerzugriff besser machen?
Freut mich das Dir die Unit gefällt, andere langen auch gut zu wie ich sehe, dafür ists ja da ^_^.
Man muss dabei halt beachten, alles wofür Du Rechte einforderst, muss in einen eigenen Code-Abschnitt rein, total isoliert vom Rest Source, also "elevated" hat keinen internen Zugriff auf was auch immer Dein Project so alles bereitstellt. Ich selbst fühle mich Pudelwohl damit und habe bis jetzt noch nichts negatives damit Erfahren können. Am wichtigsten, was oft übersehen wird, ist der INITIALISATION/FINALISATION Abschnitt, das ist praktisch der Motor der alles am laufen hält. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:35 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