Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Dynamisch Adminrechte anfordern (https://www.delphipraxis.net/155850-dynamisch-adminrechte-anfordern.html)

greenmile 10. Nov 2010 12:14

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?

Phoenix 10. Nov 2010 12:39

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.

himitsu 10. Nov 2010 12:44

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.

http://msdn.microsoft.com/de-de/library/w070t6ka.aspx


Also besser ist es, einen eigenen Prozess dafür zu erzeugen (Programm mit Adminrechten starten)

gmc616 11. Nov 2010 01:00

AW: Dynamisch Adminrechte anfordern
 
Mit einem Out-Of-Process-COM-Server!

Hier im Forum steht einiges dazu Hier im Forum suchenVista UAC COM

Ich werkel z.Z. selbst daran, habs nur bis jetzt noch nicht hin gekriegt.

Bernhard Geyer 11. Nov 2010 07:35

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.

greenmile 11. Nov 2010 10:07

AW: Dynamisch Adminrechte anfordern
 
Genau so habe ich es jetzt gelöst, funktioniert super. Vielen Dank für die Tipps!

shmia 11. Nov 2010 10:35

AW: Dynamisch Adminrechte anfordern
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1060846)
Mach dir doch eine zweite Exe die nur die Funktionen beinhaltet die Admin-Rechte benötigt

Die SysInternals Tools "ProcessExplorer" und "Autoruns" starten sich selbst mit Adminrechten.
Es müsste als auch ohne 2. Exe möglich sein.

himitsu 11. Nov 2010 10:52

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 00:32 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