CreateProcessAsUser的问题

mcaok mcaok 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在服务中运行RunProcess函数以CreateProcessAsUser启动一个进程,用任务管理器查看是以当前用户运行的。但是点击这个进程中的按钮调用SHBrowseForFolder时弹却不出来文件选择对话框。手动运行这个程序时就能弹出文件选择对话框。我觉得可能是CreateProcessAsUser的问题,谁能帮我看一下问题出在哪了。以下是代码。

BOOL RunProcess(LPTSTR lpImage)
{

BOOL bResult;
if(!lpImage)
{
return FALSE;
}
//RaisePrivleges();
HANDLE hToken;
if(!GetTokenByName(hToken,"EXPLORER.EXE"))
{
return FALSE;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
//LPVOID pEnv = NULL;

ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb= sizeof(STARTUPINFO);
si.lpDesktop = TEXT("winsta0\\default");

SECURITY_ATTRIBUTES sa;
sa.nLength=sizeof(sa);
sa.bInheritHandle=FALSE;
sa.lpSecurityDescriptor=NULL;
//CreateEnvironmentBlock(&pEnv, hToken, TRUE);

bResult= CreateProcessAsUser(hToken,NULL,lpImage,&sa,NULL, FALSE,NORMAL_PRIORITY_CLASS|CREATE_NEW_CONSOLE,NULL,NULL,&si,&pi);


CloseHandle(hToken);
return bResult;

}

...全文
评论 16
收藏 已收藏
分享
返回顶部
mcaok
进程/线程/DLL 15,465 成员 49,169 内容