在Windows服务模式下运行GUI应用程序
我正在编写一个作为Windows服务运行的服务器,通过请求调用Firefox来生成网页的pdf快照。
我知道在服务模式下运行GUI程序是一个坏主意,但我的程序的服务器性质限制了它在用户模式下运行。 运行用户级“代理”也不是一种选择,因为在运行服务器的机器上可能没有登录交互式用户。
在我的实验中,当服务在已登录的用户帐户下运行时,Firefox成功生成了pdf。 显然,在其他情况下它不起作用:用于未登录的本地系统和用户帐户。 在启用“允许服务与桌面交互”选项的LocalSystem下,我可以看到Firefox开始报告无法找到打印机。
由于要求运行pdf服务器的打开用户会话是不实际的,除了从虚拟机运行整个事情以外,是否有任何解决方法?
更新:我认为这个问题并不是真正用于帐户权限,而是FF在服务模式下运行时等待的隐形模式对话框。
但是,当FF在LocalSystem帐户下运行时,它仍然无法创建pdf。 FF说它找不到打印机,我想知道这是否可以以某种方式启用的权限?
您可能想尝试一种不同的方法,在您的项目中包含一些.NET PDF库(PDFsharp是一个很好的开源代码),而不是将其与您的项目中包含的WebBrowser控件结合使用呈现PDF。
如果你尝试这个,不要忘记使用STAThread属性。
我在MS Word运行时遇到了类似的难题,无人照管。 你需要做的就是以你设置用来运行firefox进程的用户身份登录,并完成设置打印机的过程。
有可能只是以该用户身份登录就足够了 - 在首次登录时会执行一些操作。
我很抱歉,我不清楚 - 我的意思是你必须使用该帐户交互式登录,配置默认打印机,注销,然后运行你的服务
你可以将程序作为预定任务运行吗? 该任务可以分配给一个应该解决服务限制的特定用户帐户。
链接地址: http://www.djcxy.com/p/18473.html