AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ordnerzugriff besser machen?

Ein Thema von MicMic · begonnen am 23. Sep 2018 · letzter Beitrag vom 25. Sep 2018
Antwort Antwort
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#1

Ordnerzugriff besser machen?

  Alt 23. Sep 2018, 19:58
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
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Ordnerzugriff besser machen?

  Alt 23. Sep 2018, 20:03
Wie lautet die Frage?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#3

AW: Ordnerzugriff besser machen?

  Alt 23. Sep 2018, 20:18
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:
https://www.delphipraxis.net/537485-post.html#625343
https://www.delphipraxis.net/364933-post.html#432800
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Ordnerzugriff besser machen?

  Alt 23. Sep 2018, 21:06
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:
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;
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.

@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
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Ordnerzugriff besser machen?

  Alt 23. Sep 2018, 23:12
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.
Angehängte Dateien
Dateityp: 7z Elevated.7z (3,7 KB, 29x aufgerufen)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.800 Beiträge
 
Delphi 12 Athens
 
#6

AW: Ordnerzugriff besser machen?

  Alt 24. Sep 2018, 08:54
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
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Ordnerzugriff besser machen?

  Alt 24. Sep 2018, 09:21
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

AW: Ordnerzugriff besser machen?

  Alt 25. Sep 2018, 15:18
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.
Habe es mir nun angeschaut. Muss es aber noch mal entsprechend für meinen Anwendungszweck anpassen und schauen ob alles so geht wie ich möchte.
Da wäre dann wenigstens ein 2. Start der Anwendung nicht nötig. Danke für's hochladen

Micha
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: Ordnerzugriff besser machen?

  Alt 25. Sep 2018, 15:20
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
Davon darf man aber nie ausgehen... wäre falsch dies so zu prüfen.
Micha
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Ordnerzugriff besser machen?

  Alt 25. Sep 2018, 19:55
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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