![]() |
Dynamisch Adminrechte anfordern
Nachdem ich nun die Dateiendungen korrekt setzen konnte (klappt komischerweise unter 7 nicht immer korrekt), habe ich nun das Problem, dass ich dafür auf "CLASSES_ROOT" zugreifen muss und dafür benötige ich Adminrechte. Wie ich die gesamte Anwendung unter Adminrechten laufen lasse, weiß ich, ich möchte jedoch nur dann Adminrechte anfordern, wenn ich eben in CLASSES_ROOT schreiben will. Kurzum: Wie kann ich denn dynamisch, also zur Laufzeit Adminrechte anfordern, ohne gleich die gesamte Anwendung dauerhaft auf den AdminLevel zu heben?
|
AW: Dynamisch Adminrechte anfordern
Innerhalb Deines Prozesses: Gar nicht.
Wenn ein Prozess einmal mit einem Security-token läuft war es das. Auch die sog. "Elevation" startet nur einen neuen Prozess mit den angeforderten Rechten. Einfachste Idee: Das Schreiben in den Key in ein extra-Tool (mini .exe mit nur diesem Zweck) via Elevation aufrufen. Dann kommt der Dialog (oder nicht, je nach eingestellter UAC) und nur diese eine Änderung wird von dem zweiten Tool mit Adminrechten ausgeführt. Danach beendet sich das Tool und meldet Erfolg (oder Mißerfolg) an Deine Anwendung zurück. |
AW: Dynamisch Adminrechte anfordern
Impersonate
Bei Luckie gibt es einen alten Code und auch im Forum steht schon Einiges dazu. Man kann/konnte einen Thread mit anderen Rechten starten, bzw. diese ändern. Aber empfohlen wird das nicht und es funktioniert auch nicht immer/mehr. ![]() Also besser ist es, einen eigenen Prozess dafür zu erzeugen (Programm mit Adminrechten starten) |
AW: Dynamisch Adminrechte anfordern
Mit einem Out-Of-Process-COM-Server!
Hier im Forum steht einiges dazu ![]() Ich werkel z.Z. selbst daran, habs nur bis jetzt noch nicht hin gekriegt. |
AW: Dynamisch Adminrechte anfordern
Mach dir doch eine zweite Exe die nur die Funktionen beinhaltet die Admin-Rechte benötigt.
Diese stattest du mit einen passenden Manifest aus das Adminrechte anfordert. Für jede Funktion die Adminrechte benötigt überlegst du dir Aufrufparameter und dann startest du die 2te Exe mit passenden Admin-Rechten. |
AW: Dynamisch Adminrechte anfordern
Genau so habe ich es jetzt gelöst, funktioniert super. Vielen Dank für die Tipps!
|
AW: Dynamisch Adminrechte anfordern
Zitat:
Es müsste als auch ohne 2. Exe möglich sein. |
AW: Dynamisch Adminrechte anfordern
Klar:
- Anwendung (Application.ExeName oder ParamStr(0)) z.B. über CreateProcess mit Adminrechen starten - und dieser dabei via Parameter mitteilen was gemacht werden soll. - Ohne Parameter normal starten. Eventuell auch abfragen, ob man es selber machen kann (Adminrechte schon vorhanden) und sich dafür nicht nochmal selber starten. Oder "hierfür brauche ich Adminrechte (vorher prüfen) und starte mich deshalb gleich neu [ok] [abbgrechen]" und sich danach selber beenden ... neuer Prozess macht dann mit seinen Adminrechten weiter. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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