CreateProcessAsUser vs ShellExecute
Мне необходимоShellExecute
что-то как другой пользователь, в настоящее время я запускаю вспомогательный процесс сCreateProcessAsUser
что вызываетShellExecute
, но это похоже на слишком много взлома (неправильный родительский процесс и т. д.) Есть ли лучший способ сделать это?
@PabloG: ImpersonateLoggedOnUser не работает:
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);
просто запустит calc как зарегистрированный пользователь, а не "otheruser"
@ 1800 ИНФОРМАЦИЯ:CreateProcess
/CreateProcessAsUser
это не то же самое, чтоShellExecute
с UAC на Vista,CreateProcess
бесполезно, когда у вас нет контроля над тем, какую программу выполняет пользователь (CreateProcess
вернется с ошибкой, если вы дадите ему исполняемый файл с манифестом, помеченным как requireAdmin)
@ Брайан Р. Бонди: я уже знаю эту информацию (и не поймите меня неправильно, это хорошая вещь), но это не по теме (ИМХО) Я прошуShellExecuteAsUser
, а не о запуске процессов от имени другого пользователя, я уже знаю, как это сделать.