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, а не о запуске процессов от имени другого пользователя, я уже знаю, как это сделать.

Ответы на вопрос(4)

Ваш ответ на вопрос