Entwickler-Ecke

Windows API - ShellExecute mit Adminrechten


mindtrap - Fr 16.10.09 18:32
Titel: ShellExecute mit Adminrechten
Hallo,

aus einer Applikation, die über entsprechende Adminrechte verfügt, möchte ich per
ShellExecute dem Benutzer "Systemeigenschaften" zeigen.

Ich hatte an folgenden Code gedacht:

Delphi-Quelltext
1:
  ShellExecute(0'open''control''sysdm.cpl,,4''', SW_SHOWNORMAL);                    


Ich habe das Verhalten bisher nicht unter XP getestet, aber unter Vista wird nur ein Teil der Systemeigenschaften gezeigt.
Z.B. Informationen über Wiederherstellungspunkte werden nicht angezeigt.

Anscheinend wird das Programm mit einfachen Userrechten gestartet und nicht mit administrativen.

Gibt es ein Möglichkeit über diesen Weg Rechte zu vererben?
Oder z.B. das gleiche Verhalten wie WinTaste + R (Run... bzw. Ausführen...) mit der gleichen Eingabe von oben zu provozieren?

Ein runas /user:administrator ... ist keine Lösung in meinem Fall.


Vermutlich bleibt nur der Weg über CreateProcess?

MfG
mindtrap


jakobwenzel - Fr 16.10.09 18:52

Unter Vista kannst du für Adminrechte einfach open durch runas ersetzen.


Delete - Fr 16.10.09 18:54

Administrator unter Vista sind erstmal auch nur normale Benutzer, können aber bei Bedarf volle Administratorenrechte erlagen. Stichwort "Elevation" oder wie das heißt.


mindtrap - Fr 16.10.09 19:10

user profile iconLuckie hat folgendes geschrieben Zum zitierten Posting springen:
Administrator unter Vista sind erstmal auch nur normale Benutzer, können aber bei Bedarf volle Administratorenrechte erlagen. Stichwort "Elevation" oder wie das heißt.


Ja, ich weiß. xD
Mit 'normaler Benutzer' war auch nur gemeint, dass ich keine administrativen Rechte bekomme.
Werd mal unter "Elevation" stöbern.



user profile iconjakobwenzel hat folgendes geschrieben Zum zitierten Posting springen:
Unter Vista kannst du für Adminrechte einfach open durch runas ersetzen.


Delphi-Quelltext
1:
  ShellExecute(0'runas''control''sysdm.cpl,,4''', SW_SHOWNORMAL);                    


Führt zum gleichen Ergebnis, wie 'open'.


jaenicke - Sa 17.10.09 09:58

user profile iconmindtrap hat folgendes geschrieben Zum zitierten Posting springen:
Vermutlich bleibt nur der Weg über CreateProcess?
Umgekehrt, für Elevation geht nur ShellExecute / ShellExecuteEx. Da du bereits Adminrechte hast, kannst du auf normalem Weg keine Prozesse ohne starten. Heißt: Was du direkt startest bekommt Adminrechte.

Dass das so nicht klappt, kann mehrere Ursachen haben. Ich vermute das Systemsteuerungsapplet wird ohne diese gestartet, weil du den Prozess nicht direkt startest, sondern das Starten ans System weitergibst über die Datei.