我需要作为另一个用户使用
@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);
将以登录的用户身份启动计算器,而不是“otheruser”。
@1800 INFORMATION:
@Brian R. Bondy:我已经知道这个信息(不要误解,这是好东西),但这是离题了(在我看来),我正在寻求
ShellExecute
,目前我使用CreateProcessAsUser
启动帮助进程来调用ShellExecute
,但那似乎太过hack(错误的父进程等)。有更好的方法吗?@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);
将以登录的用户身份启动计算器,而不是“otheruser”。
@1800 INFORMATION:
CreateProcess
/CreateProcessAsUser
与ShellExecute
不同,在Vista上启用UAC时,当您无法控制用户执行的程序时,CreateProcess
是无用的(如果您给它一个标记为requireAdmin的清单文件,则CreateProcess
会返回一个错误)。@Brian R. Bondy:我已经知道这个信息(不要误解,这是好东西),但这是离题了(在我看来),我正在寻求
ShellExecuteAsUser
,而不是关于启动进程作为另一个用户的内容,我已经知道如何做到这一点。
ShellExecute
吗?结合ImpersonateLoggedOnUser
使用吗? - Ignitor