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
Luckie hat folgendes geschrieben : |
| 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.
jakobwenzel hat folgendes geschrieben : |
| 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
mindtrap hat folgendes geschrieben : |
| 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!