gpt4 book ai didi

windows - 从非交互式进程(Windows 服务、计划任务等)在 WinServer 2008 中打印 PDF

转载 作者:可可西里 更新时间:2023-11-01 13:50:06 26 4
gpt4 key购买 nike

我正在尝试编写一个打印 PDF 的非交互式进程,我需要有关如何在 Windows Server 2008(和 Vista/7)上构建它的建议。

之前,我们有一个计划任务(设置为无论用户帐户是否登录都运行)打印目录内的所有 PDF。 (一个单独的进程会将 PDF 移动到目录中。)在运行时,这将启动另一个进程(Adobe Reader 或 Foxit Reader)来打印 PDF。 Adobe Reader 和 Foxit Reader 都具有静默打印功能,因此所有内容都会发送到运行计划任务的用户的默认打印机。没有生成任何 UI,所有文件都可以顺利打印。 这适用于 Server 2003。

该过程不再适用于 Server 2008。我不完全确定,但我相信这与 session 0 隔离有关。我无法证明这一点。但是,我可以说当设置为“仅在用户登录时运行”时,该进程作为计划任务运行。现在,虽然这可行,但它会强制用户登录到机器,因此不能满足我的要求。 (我的第一个线索是在 this previous question 中。)

我无法确定我该如何继续前进。有什么办法可以满足我的要求吗?

一些注意事项:

我见过的每个解决方案似乎都在使用已登录用户的凭据。请参阅我上面链接的问题 - 列出的解决方案似乎是在获取已登录用户的 token 用户并使用它来运行程序。 (查看 GetCurrentUserToken() 过程 - 返回值稍后用于 API 调用 CreateProcessAsUser()。)

据我所知,我当前的进程没有生成 UI。我已经使用 ProcMon 验证了读取器进程(Adobe 或 Foxit)似乎可以正确打印并且打印驱动程序本身就显得有问题。这是通过尝试使用打印到文件驱动程序来支持的——打印到文件驱动程序以三个可见的步骤运行,并且清楚地完成了所有文件的第一个步骤而没有开始第二个步骤。那么 Session 0 Isolation 是如何影响打印机驱动程序的呢?我不清楚。 (The best documentation I can find on the subject 只提到打印机驱动程序可能会受到影响,即使后台打印程序在 session 0 中运行。)

作为 Windows 服务打印永远无法工作,即使进程选中了“允许服务与桌面交互”也是如此。

添加粗体文本以抵消引起模糊的文本墙效果。

最佳答案

尝试使用 Foxit Reader 而不是 Acrobat-Reader。福昕阅读器支持无 GUI/命令行执行,在 Windows 2008 及更高版本中也是如此!

也可以打印,但每次运行打印作业时都必须在 session0 中添加(或检查)打印机。

如果您需要更多帮助,请再次询问。我已经构建了一个 powershell 脚本,它在任务调度程序中运行以在 Foxit Reader 的帮助下打印 pdf 文件。

关于windows - 从非交互式进程(Windows 服务、计划任务等)在 WinServer 2008 中打印 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com