Adminrechte geben
-
Wie kann ich meinem Programm Adminrechte geben?
-
Gar nicht. Oder meinst Du unter Vista mit elevated rights zu starten.
Ein Programm läuft mit dem Rechte Token mit dem es gestartet wurde. Nehmen kann sich ein Programm nichts und das ist gut so.
-
Du kannst deinem Programm Adminrechte geben indem du den User aufforderst Name & Passwort eines Admins einzugeben, und diese dann für LogonUser() verwendest. Dann machst du mit dem Token dass du von LogonUser bekommen hast ImpersonateLoggedOnUser() und dann hat das Programm Adminrechte.
Unter Vista wird das u.U. wohl nicht reichen, aber mit Vista hab' ich noch keine Erfahrungen... was mich irgendwie garnicht stört

-
Unter Vista ist das noch einfacher. Entweder einfachmit ShellExecute runas starten. Den Rest macht Vista!
http://blog.m-ri.de/index.php/2007/05/09/wie-einen-prozess-unter-vista-mit-gehobenen-rechten-starten/Oder einfach ein entsprechendes Manifest "requireAdministrator" geben.
-
Und was macht man in Vista wenn ein Programm nicht immer mit Admin Rechten laufen muss/soll, sondern nur wenn bestimmte Aktionen durchgeführt werden müssen?
Is ja meist garnicht erwünscht dass das Programm immer mit Admin Rechten läuft und natürlich auch "sicherer" wenn man die nur "aktiviert" wenn man sie wirklich braucht.
-
Dann kannst Du zum Beispiel in Deinem Programm das "asInvoker" normalerweise ist prüfen ob Du den Admin Token hast:
http://blog.m-ri.de/index.php/2007/03/15/ermitteln-ob-ein-prozess-als-administrator-lauft-oder-nicht/Wenn ja schaltest Du die Funktionen frei.
Oder Du schreibst ein zweites Programm für diese Operationen, das als "requireAdministrator" definiert ist und UAC fragt von selbst.
-
Martin Richter schrieb:
Oder Du schreibst ein zweites Programm für diese Operationen, das als "requireAdministrator" definiert ist und UAC fragt von selbst.
Das geht natürlich, und ist vermutlich nichtmal die dümmste Idee

-
hustbaer schrieb:
Martin Richter schrieb:
Oder Du schreibst ein zweites Programm für diese Operationen, das als "requireAdministrator" definiert ist und UAC fragt von selbst.
Das geht natürlich, und ist vermutlich nichtmal die dümmste Idee

Genau! Ich verwende genau dieses Verfahren!
Es wird in den Whitepapers auch als empfohlen angegeben!