CreateProcessAsUser vs ShellExecute
necesitoShellExecute
algo como otro usuario, actualmente comienzo un proceso auxiliar conCreateProcessAsUser
eso llamaShellExecute
, pero eso parece demasiado hack (proceso padre incorrecto, etc.) ¿Hay una mejor manera de hacer esto?
@PabloG: ImpersonateLoggedOnUser no 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);
simplemente iniciará calc como el usuario conectado, no "otro usuario"
@ 1800 INFORMACIÓN:CreateProcess
/CreateProcessAsUser
no es lo mismo queShellExecute
, con UAC en Vista,CreateProcess
es inútil cuando no tienes control sobre qué programa está ejecutando el usuario (CreateProcess
volverá con un error si le da un archivo exe con un manifiesto marcado como requireAdmin)
@Brian R. Bondy: Ya conozco esta información (y no me malinterpreten, es algo bueno), pero está fuera de tema (en mi humilde opinión), estoy pidiendo unShellExecuteAsUser
, no se trata de iniciar procesos como otro usuario, ya sé cómo hacerlo.