在Windows服务模式下运行GUI应用程序

Leo*_*nid 3 windows firefox user-interface windows-services

我正在编写一个作为Windows服务运行的服务器,通过请求调用Firefox来生成网页的pdf快照.

我知道在服务模式下运行GUI程序是个坏主意,但我的程序的服务器性质限制了在用户模式下运行它.运行用户级"代理"也不是一种选择,因为在服务器运行的计算机上可能没有交互式用户登录.

在我的实验中,当服务在已登录的用户帐户下运行时,Firefox成功生成了pdf.显然它在其他情况下不起作用:对于未登录的本地系统和用户帐户.在LocalSystem下启用了"允许服务与桌面交互"选项,我可以看到Firefox启动时报告它无法找到打印机.

由于要求pdf服务器的打开用户会话运行是不切实际的,除了从虚拟机运行整个事件之外,还有其他解决方法吗?

更新:我认为问题不在于帐户权限,而是在服务模式下运行时FF正在等待的隐形模式对话框.

但是,当FF在LocalSystem帐户下运行时,它仍然无法创建pdf.FF说它找不到打印机,我想知道这是否是可以某种方式启用的权限?

Dea*_*uga 7

您可能想尝试一种不同的方法,在项目中包含一些.NET PDF库(PDFsharp是一个很好的,开源的选择),而不是将它与WebBrowser控件结合使用,您还要在项目中包含这些渲染PDF.

如果您尝试这样做,请不要忘记使用STAThread属性.