我正在编写一个 .NET Windows 服务,其作用是启动一个 GUI 应用程序(其源代码不可用)。 该操作是一劳永逸的,除了初始命令行参数外没有任何通信。
该服务应该作为给定的 Windows 帐户运行。
问题:服务启动的应用未显示在桌面上。它需要,因为它是一个交互式应用程序。解决方案是什么?
注意:这是系统的规范和设计。与服务/应用程序通信和安全相关的典型问题不适用于此特定案例。
编辑:当以本地系统帐户登录时,GUI 元素显示正确,但是,由于 GUI 应用程序需要访问网络驱动器(无法理解 UNC 映射),因此需要以指定用户身份运行帐户,并且没有“显示交互元素”设置。
edit2:操作系统是Windows 2003 Server,没有升级计划。
最佳答案
不幸的是,自从 Vista 以来,问题就更多了……有关原因的一些细节已发布在 this blog post. 上
该帖子提到了一些可能的解决方法。 Here is a thread on MSDN详细说明了整个过程,以及您可能会遇到的一些潜在问题。
但是,我强烈建议您尝试看看是否可以切换到让用户模式应用程序作为启动应用程序运行(当用户登录时),并且与您的服务的任何通信都由该应用程序处理。更可靠,尤其是在vista、终端服务等情况下。
关于c# - 从 Windows 服务加载 GUI 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/807683/