Wie einen Prozess unter Vista mit gehobenen Rechten starten?
Was macht man eigentlich wenn man einen Prozess unter Vista hat, der mit normalen Rechten arbeitet, nun aber einen Prozess starten möchte, der angehobene Rechte (elevated) benutzen soll? Also quasi eine Abkürzung für “rechter Mausklick -> Als Administrator ausführen”.
Das ist ausgesprochen einfach! Man verwendet ShellExecute oder ShellExecuteEx mit dem neuen Verb “runas”.
Der nachfolgende Code startet die Systemsteuerung mit angehobenen (administrativen/elevated) Rechten. Vorher erfolgt natürlich die allseits bekannte UAC Nachricht. Ist der User kein Administrator bekommt er eine Meldung, dass er sich entsprechend anmelden soll. Ansonsten muss er dem Zugriff zustimmen. Bricht der User den Dialog ab wird nichts ausgeführt.
int _tmain(int argc, _TCHAR* argv[])
{
SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = _T(“runas”);
shExecInfo.lpFile = _T(“control.exe”);
shExecInfo.lpParameters = NULL;
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_SHOW;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);
return 0;
}
PS: Übrigens versteht auch Windows 2003 Server und Windows XP das “runas” Verb. In diesem Fall wird der entsprechende Anmeldedialog gezeigt, der es erlaubt den aktuellen Benutzer zu verwenden (mit evtl. eingeschränkten Rechten), oder eben einen anderen Account. Nett! ![]()
Nur scheinbar auch ein Feature, dass wieder mal nicht dokumentiert ist.
2 Kommentare zu “Wie einen Prozess unter Vista mit gehobenen Rechten starten?”
Link für diesen Beitrag | RSS-Feed zu diesem Beitrag
Hinterlassen sie einen Kommentar:
Beachten sie bitte, dass Kommentare evtl. nicht sofort hier erscheinen. Die Kommentare werden zur Moderation an den Webmaster gesendet. Es kann also etwas dauern, bis Ihr Kommentar hier veröffentlicht wird!
on Fr 08 Jun 2007 um 20:23 # Martin’s Blog » Automatsiches Update des Thunderbird unter Vista
[...] Siehe dazu auch meinen Eintrag hier: http://blog.m-ri.de/index.php/2007/05/09/wie-einen-prozess-unter-vista-mit-gehobenen-rechten-starten… [...]
on Fr 26 Nov 2010 um 11:52 #
Björn
Danke für den Tipp. Was aber wenn ich als normaler Nutzer aber keine Anmeldedaten des Admins kenne, allerdings der Prozess unter normalen Rechten die Zugangsdaten eines Administrators hat? Dann klappt der ganze Kram wieder nicht, weil man nicht gleichzeitig Username/Passwort und UseShellExecute nutzen kann. Ohne UseShellExecute kommt der Fehler, dass erhöhte Rechte erforderlich sind.
Gibt es dafür auch schon einen Tipp?