加载用户配置文件后创建进程用户
问题描述:
我有作为系统运行的服务,我想用用户权限产生一些用户TS会话中的新进程。加载用户配置文件后创建进程用户
我正在调用LogonUser,LoadUserProfile,CreateEnvironmentBlock,CreateProcessAsUser并在用户TS会话中spwan进程。在用户终端服务会话中
过程(CMD.EXE)运行,但是当我试图运行GUI应用程序,我得到以下错误信息:
异常EAccessViolation模块ntdll.dll中在00022272.
模块'ntdll.dll'中地址77D22272的访问冲突。写地址0000000C。
我错过了什么吗?
任何帮助将不胜感激!
感谢, 利奥尔
答
看Launching a process in user’s session from a service。主要问题是你应该在其他TS会话上开始处理。所以你必须切换当前会话SetTokenInformation
和TokenSessionId
。为了能够做到这一点,你必须启用SE_TCB_NAME
权限。
而且你必须改变桌面的安全描述符和Windows站方面的OpenWindowStation
,OpenDesktop
和SetUserObjectSecurity
对象(见http://msdn.microsoft.com/en-us/library/ms681928.aspx,http://msdn.microsoft.com/en-us/library/ms687107.aspx和http://support.microsoft.com/kb/165194)