首页 >后端开发 >C++ >如何在不影响用户体验的情况下从 Windows 服务执行 GUI 应用程序?

如何在不影响用户体验的情况下从 Windows 服务执行 GUI 应用程序?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-11 10:35:10815浏览

How Can I Execute GUI Applications from a Windows Service Without Disrupting the User Experience?

从 Windows 服务执行 GUI 应用程序

为了远程管理和启动应用程序,许多人选择使用 Windows 服务。然而,在 Windows 服务环境中执行向当前登录用户显示图形用户界面 (GUI) 的应用程序会带来挑战。本文深入探讨了该主题,讨论了如何在 C 语言中以编程方式定位当前活动桌面并在其上执行 GUI 应用程序。

Roger Lipscombe 巧妙的答案建议使用 WTSEnumerateSessions 函数来识别目标桌面,然后利用 CreateProcessAsUser 函数在识别的桌面上启动应用程序执行。虽然技术上可行,但我们必须注意:

对传统做法的担忧和偏差:

尽管技术上有效,但这种方法引起了担忧并偏离了传统做法:

  • 识别活跃的挑战桌面: 在某些环境中,例如具有多个活动用户的终端服务器主机,精确定位“活动”桌面可能很复杂甚至不可能。
  • 意外的应用程序出现: 突然启动用户桌面上的应用程序可能会造成破坏,发生在用户未预料到的不方便时刻或会话处于不稳定状态时(例如初始化、关闭等)。

推荐解决方案:利用客户端应用程序:

对于更传统的方法,我们建议放置一个为您在全球初创公司中提供服务的紧凑型客户端应用程序的快捷方式。该客户端应用程序随每个用户会话启动,可用于启动所需的应用程序,而无需对用户凭据、会话或桌面进行复杂的操作。

灵活性和标准化:

这种方法提供了更大的灵活性并符合 Windows 应用程序的行业标准部署:

  • 可自定义部署:管理员保留根据需要调整或禁用快捷方式的能力,从而简化部署过程。
  • 与其他的兼容性应用程序:此方法遵循既定的 Windows 约定,有助于与其他应用程序无缝集成。

以上是如何在不影响用户体验的情况下从 Windows 服务执行 GUI 应用程序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn