CreateProcessAsUser vs ShellExecute

Ich muss einfachShellExecute etwas als ein anderer Benutzer, derzeit starte ich einen Hilfsprozess mitCreateProcessAsUser das ruftShellExecute, aber das scheint ein zu großer Hack zu sein (Falscher übergeordneter Prozess usw.) Gibt es einen besseren Weg, dies zu tun?

@ PabloG: ImpersonateLoggedOnUser funktioniert nicht:

HANDLE hTok;
VERIFY(LogonUser("otheruser",0,"password",LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hTok));
VERIFY(ImpersonateLoggedOnUser(hTok));
ShellExecute(0,0,"calc.exe",0,0,SW_SHOW);
RevertToSelf();
CloseHandle(hTok);

startet calc nur als angemeldeter Benutzer, nicht als "anderer Benutzer"

@ 1800 INFORMATION:CreateProcess/CreateProcessAsUser ist nicht dasselbe wieShellExecute, mit UAC unter Vista,CreateProcess ist nutzlos, wenn Sie keine Kontrolle darüber haben, welches Programm der Benutzer ausführt CreateProcess wird mit einem Fehler zurückgegeben, wenn Sie eine exe-Datei mit einem als requireAdmin gekennzeichneten Manifest angeben.

rian R. Bondy: Ich kenne diese Info bereits (und verstehe mich nicht falsch, es ist gutes Zeug), aber es ist vom Thema abweichend (IMHO) Ich bitte um einShellExecuteAsUser, nicht um Prozesse als ein anderer Benutzer zu starten, ich weiß bereits, wie das geht.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage