在服务中无法启动应用程序界面
环境:Windows Server 2003
在系统服务中,采用CreateProcess启动应用程序,在进程管理中,看到相关进程启动,但是无法看到界面。
- C/C++ code
hScm=OpenSCManager(0, 0, SC_MANAGER_CREATE_SERVICE);hService=CreateService( hScm, _T("ServiceTest"), _T("ServiceTest"), SERVICE_ALL_ACCESS, SERVICE_INTERACTIVE_PROCESS | SERVICE_WIN32_OWN_PROCESS, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, "c:\\ServiceTest.exe", 0,0,0,0,0);PROCESS_INFORMATION pi;STARTUPINFO sti;ZeroMemory(&sti,sizeof(sti));sti.cb=sizeof(sti);sti.lpDesktop= "WinSta0\\Default";CreateProcess(strCmd,NULL,NULL,NULL,FALSE,0,NULL,NULL,&sti,&pi);
我在XP下测试的,是可以启动界面,就是在2003 Server上不行。
[解决办法]
这个问题经常出现
OpenProcessToken
DuplicateToken
WTSGetActiveConsoleSessionId
SetTokenInformation
CreateProcessAsUser
[解决办法]