我正在编写一个作为 Windows 服务运行的服务器,它根据请求调用 Firefox 来生成网页的 pdf 快照。
我知道在服务模式下运行 GUI 程序是个坏主意,但我的程序的服务器性质限制了它在用户模式下运行。运行用户级“代理”也不是一种选择,因为在服务器运行时可能没有交互式用户登录到机器上。
在我的实验中,Firefox 在已登录的用户帐户下运行服务时成功生成了 pdf。显然它在其他情况下不起作用:对于未登录的本地系统和用户帐户。在启用了“允许服务与桌面交互”选项的 LocalSystem 下,我可以看到 Firefox 启动后报告无法找到打印机。
由于需要打开用户 session 才能运行 pdf 服务器是不切实际的,除了从虚拟机运行整个过程之外,是否有任何解决方法?
更新:我认为问题不在于帐户权限,而在于 FF 在服务模式下运行时正在等待的不可见模式对话框。
但是当FF在LocalSystem账户下运行时仍然无法创建pdf。 FF 说它找不到打印机,我想知道这是否是可以以某种方式启用的权限?
最佳答案
您可能想尝试一种不同的方法,在您的项目中包含一些 .NET PDF 库(PDFsharp 是一个很好的开源选择),而不是将它与 WebBrowser 控件结合使用,您还可以包含在您的项目中以呈现 PDF。
如果你尝试这个,不要忘记使用 STAThread 属性。
关于windows - 在 Windows 服务模式下运行 GUI 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581406/