代码之家  ›  专栏  ›  技术社区  ›  James

为什么我不能在Windows服务中使用UI组件(Windows窗体)?

  •  1
  • James  · 技术社区  · 14 年前

    1. 制作缩略图的服务 网页。现在我唯一的办法 要做到这一点,就要努力 自动化.Net WebBroswer 组件。

    2. 自动打印MS Word 文件。

    在Vista之前,有一些技巧可以解决这个问题,但现在没有了。我的问题是为什么会这样,一个人真正有什么选择?

    3 回复  |  直到 14 年前
        1
  •  6
  •   Will Dean    14 年前

    查找 Shatter Attacks Session 0 Isolation Feature

    基本上,如果两个进程(不同用户的)共享同一个桌面,一个进程可以通过发送windows消息在另一个进程中执行它想要的任何代码,这被称为破坏攻击。

    关于这是否是一个设计缺陷,有很多讨论,在Vista之后,微软决定删除对服务的任何交互式桌面支持,因为这是一个潜在的安全漏洞。

        2
  •  1
  •   FastAl    14 年前

    但是

    所以解决办法是 你将从你的代码中点击服务器程序 必须 在服役。服务器将完成工作并返回结果。

    您可以使用WCF通过命名管道作为传输或其他任何工作方式在2之间进行通信。否则,可以在本地主机上使用裸命名管道或tcp/ip。从你的网站在你的用户档案,你应该知道所有关于localhost!

        3
  •  0
  •   STO    14 年前

    从技术上讲,UI组件需要启动Windows消息队列才能工作。您可以从windows服务运行它(可能允许与桌面交互,据我所知,此功能在windows Vista和更高版本中被禁用)。

    但是你所说的不是UI组件,而是COM组件,你可以使用它。至少是微软的Office,但微软不推荐使用,因为内存泄漏是可能的。最新的MS Office有服务器版,可以在没有用户界面的应用程序中使用。