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.