从 Windows 服务启动 GUI 应用程序

Posted

技术标签:

【中文标题】从 Windows 服务启动 GUI 应用程序【英文标题】:Launching a GUI application from Windows service 【发布时间】:2013-11-04 02:10:03 【问题描述】:

我已阅读此post,但给出的答案收效甚微。它说

使用 WTSEnumerateSessions 找到合适的桌面

但我得到的只是WTS_SESSION_INFO 结构中的站名。我看到的名称(例如“控制台”、“服务”)与“Winsta0\default”之类的工作站/桌面名称完全不同。答案继续陈述

然后 CreateProcessAsUser 在该桌面上启动应用程序(您将桌面句柄作为 STARTUPINFO 结构的一部分传递给它)

我不认为它指的是桌面的HANDLE 变量,因为STARTUPINFO 没有成员。我认为它指的是lpDesktop 成员,它允许您指定站/桌面名称。使用 WTSEnumerateSessions 返回的名称无法启动任何可见的 UI,而“Winsta0\default”可以。

我做错了什么?

【问题讨论】:

如果我的回答对您有帮助,请告诉我。 【参考方案1】:

刚刚在 Windows 7 上尝试了 WTSEnumerateSessions:我的用户会话(会话 1)被命名为“控制台”。

【讨论】:

感谢您的确认。

以上是关于从 Windows 服务启动 GUI 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

从 Windows 服务启动 GUI 应用程序

VS CodedUI无法启动经典Windows应用程序的GUI

错误1053:服务没有及时响应启动或控制请求

从 SSH linux 在远程窗口上启动应用程序 GUI [关闭]

如何在 Windows 服务中启动 GUI 程序?

使用网络登录从 Windows 服务创建 GUI