【发布时间】:2010-09-07 05:02:17
【问题描述】:
我需要ShellExecute 作为另一个用户,目前我使用CreateProcessAsUser 启动一个调用ShellExecute 的辅助进程,但这似乎太过分了(错误的父进程等)有没有更好的如何做到这一点?
@PabloG:ImpersonateLoggedOnUser 不起作用:
处理 hTok; VERIFY(LogonUser("otheruser",0,"password",LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hTok)); 验证(ImpersonateLoggedOnUser(hTok)); ShellExecute(0,0,"calc.exe",0,0,SW_SHOW); RevertToSelf(); 关闭句柄(hTok);将以登录用户身份启动 calc,而不是“其他用户”
@1800 信息:CreateProcess/CreateProcessAsUser 与 ShellExecute 不同,在 Vista 上使用 UAC,CreateProcess 在您无法控制用户正在执行的程序时毫无用处 (@987654328 @ 将返回一个错误,如果你给它一个带有标记为 requireAdmin 的清单的 exe 文件)
@Brian R. Bondy:我已经知道这个信息(别误会,它的好东西),但它是题外话(恕我直言)我要求ShellExecuteAsUser,而不是启动进程作为另一个用户,我已经知道该怎么做了。
【问题讨论】:
标签: winapi windows-nt