创建Windows服务以打开程序 – Delphi
我正在使用Delphi创建
Windows服务.我的服务需要做的基本上是开放一个程序.
在我的代码中我使用WinExec(aux,SW_SHOWNORMAL);.当我启动并运行该服务时,似乎没有任何操作,但是当我查看TaskManager时,我的服务应该打开的程序在列表中,并且在用户名列中显示SYSTEM. 所以程序正在打开,但它没有显示在屏幕上. 抱歉我的英语不好. 解决方法
服务始终在会话0中运行.默认情况下,服务启动的进程在服务的会话中运行,除非服务使用CreateProcessAsUser()在其他会话中运行该进程.
在XP及更早版本中,第一个登录用户也在会话0中运行(后续用户登录在会话1中运行).因此,如果服务在安装时标记为Interactive,并且它运行具有UI的进程,则在会话0中运行的用户可以看到UI. 在Vista及更高版本中,这已不再可能.用户永远不再在会话0中运行,并且服务不再被标记为交互式.这称为“会话0隔离”.服务现在必须使用CreateProcessAsUser()才能在交互式会话中运行UI进程,以便用户可以看到它. 有关更多详细信息,请参阅MSDN: Session 0 Isolation Impact of Session 0 Isolation on Services and Drivers in Windows Calling CreateProcessAsUser() from service Launching an interactive process from Windows Service in Windows Vista and later CreateProcessAsUser function (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- qt – win32控件(QWinHost)未在分层(即半透明)小部件上绘制
- windows-server-2012-r2 – 如何为Windows Server功能指定备
- .net – 可以在Windows XP上运行CoreCLR吗?
- 预配置的可启动Windows安装
- 域名系统 – 重新启动Windows DNS服务之前的DNS解析问题
- windows-8 – 在Windows 8应用程序中保存List的最佳方法是什
- Windows – WSUS – 仅自动批准“需要”更新
- Windows Phone 8.1应用程序的XAML中不支持SupportedOrienta
- 是否可以确定哪个进程启动我的.Net应用程序?
- windows-phone-8.1 – 如何以编程方式检查Windows Phone 8.