CreateProcessAsUser vs ShellExecute
eu precisoShellExecute
algo como outro usuário, atualmente inicio um processo auxiliar comCreateProcessAsUser
que chamaShellExecute
, mas isso parece muito complicado (processo pai errado etc.) Existe uma maneira melhor de fazer isso?
@PabloG: ImpersonateLoggedOnUser não funciona:
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);
irá apenas iniciar o calc como o usuário logado, não "otheruser"
@ 1800 INFORMAÇÃO:CreateProcess
/CreateProcessAsUser
não é o mesmo queShellExecute
, com o UAC no Vista,CreateProcess
é inútil quando você não tem controle sobre o programa que o usuário está executando (CreateProcess
retornará com um erro se você fornecer um arquivo exe com um manifesto marcado como requireAdmin)
@ Brian R. Bondy: Eu já conheço essa informação (e não me entenda mal, é uma coisa boa), mas está fora de tópico (IMHO), estou pedindo umaShellExecuteAsUser
, não sobre iniciar processos como outro usuário, eu já sei como fazer isso.