加载用户配置文件后创建进程用户

问题描述:

我有作为系统运行的服务,我想用用户权限产生一些用户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会话上开始处理。所以你必须切换当前会话SetTokenInformationTokenSessionId。为了能够做到这一点,你必须启用SE_TCB_NAME权限。

而且你必须改变桌面的安全描述符和Windows站方面的OpenWindowStationOpenDesktopSetUserObjectSecurity对象(见http://msdn.microsoft.com/en-us/library/ms681928.aspxhttp://msdn.microsoft.com/en-us/library/ms687107.aspxhttp://support.microsoft.com/kb/165194