【问题标题】:running UI with windows service使用 Windows 服务运行 UI
【发布时间】:2011-09-08 11:41:09
【问题描述】:

我计划使用 Windows 服务(用 C# 编写)运行启动/监视 UI 应用程序。选中“允许服务与桌面交互”。这适用于 windows xp,但对于 windows 7,弹出如下所示

当我点击查看消息时,整个屏幕空白,只显示 UI,如下所示。

有什么方法可以让它在不显示消息和屏幕空白的情况下工作。

cmets/建议表示赞赏。

问候 DEE

【问题讨论】:

    标签: .net windows windows-services


    【解决方案1】:

    在 Vista 及更高版本中,服务无法与桌面交互。服务在所谓的会话 0 隔离 下运行。您正在尝试的事情根本不可能。

    您必须重新编写应用程序,以便 UI 部分驻留在标准 Windows 应用程序中,该应用程序在登录用户的桌面上运行。此 UI 部分可以通过您喜欢的任何 IPC 机制与服务进行通信。

    【讨论】:

    • 带有命名管道的 WCF 是此类场景的不错选择。请注意安全隐患。您将发布的 API 不需要 UAC 提升权限......但服务将拥有(实际上它取决于进程的身份)。如果滥用,该 api 可能成为恶意代码的网关
    • @Steve 当然最好的做法是以受限用户的身份运行服务,并且绝对避免使用SYSTEM 帐户。
    【解决方案2】:

    “允许服务与桌面交互”是一个旧选项,现在非常不鼓励使用,尽管它存在,但预计不会在 Windows Vista 及更高版本中工作。

    您需要阅读一下为什么在其他 SO 答案中会出现这种情况:
    Allow service to interact with desktop in Windows

    然后在此处查找答案中讨论的替代方案:
    Alternative to "Allow service to interact with desktop"?

    SO 之外的另一个讨论:
    http://social.msdn.microsoft.com/forums/en-US/windowssdk/thread/f8f91e8f-5954-43a7-8bc4-80ed2ff1e3b1/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-19
      • 2014-05-16
      • 2013-06-13
      相关资源
      最近更新 更多