windows – 示例代码:服务调用CreateProcessAsUser()我希望进程
发布时间:2020-12-14 02:51:59 所属栏目:Windows 来源:网络整理
导读:我正在寻找示例代码: 对于服务调用CreateProcessAsUser()我希望进程在用户的会话中运行,而不是在会话0中运行 到目前为止,创建的进程只在会话0中像服务一样运行 解决方法 这是从一些从服务启动控制台应用程序的旧代码中删除的.它在NT4下运行,但我没有用现代
我正在寻找示例代码:
对于服务调用CreateProcessAsUser()我希望进程在用户的会话中运行,而不是在会话0中运行 到目前为止,创建的进程只在会话0中像服务一样运行 解决方法
这是从一些从服务启动控制台应用程序的旧代码中删除的.它在NT4下运行,但我没有用现代版本的
Windows进行测试,所以无法保证它能像在NT4上那样工作.
编辑:不,这不会按原样运作.您需要添加找到的代码here以创建桌面,设置SID等. if (!LogonUser(userId,domain,password,LOGON32_LOGON_INTERACTIVE,LOGON32_PROVIDER_DEFAULT,&hUserToken)) { return GetLastError(); } if (!ImpersonateLoggedOnUser(hUserToken)) { DWORD rc = GetLastError(); CloseHandle(hUserToken); return rc; } STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si,sizeof(si)); memset(&pi,sizeof(pi)); si.cb = sizeof(si); rc = CreateProcessAsUser(hUserToken,// user token 0,// app name "foo.exe",// command line 0,// process attributes 0,// thread attributes FALSE,// don't inherit handles DETACHED_PROCESS,// flags 0,// environment block 0,// current dir &si,// startup info &pi); // process info gets put here if (!rc) { DWORD rc = GetLastError(); RevertToSelf(); CloseHandle(hUserToken); return rc; } RevertToSelf(); CloseHandle(hUserToken); return 0; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读