加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-14 02:16:25 所属栏目:Windows 来源:网络整理
导读:我正在尝试编写一个打印PDF的非交互式进程,我需要有关如何在 Windows Server 2008(和Vista / 7)上构建它的建议. 以前,我们有一个计划任务(设置为运行是否登录用户帐户),它将打印目录中的所有PDF. (单独的过程会将PDF移动到目录中.)在运行时,这将启动另一个进
我正在尝试编写一个打印PDF的非交互式进程,我需要有关如何在 Windows Server 2008(和Vista / 7)上构建它的建议.

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

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

我无法确定如何在这方面取得进展.有没有办法满足我的要求?

几点说明:

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

我现在的流程尽可能地生成,没有用户界面.我已经使用ProcMon验证了读取器进程(Adobe或Foxit)似乎正确打印并且打印驱动程序本身似乎有问题.这是通过尝试使用打印到文件驱动程序来支持的 – 打印到文件驱动程序以三个可见步骤运行,并且清楚地完成所有文件的第一个而不启动第二个.那么Session 0 Isolation如何影响打印机驱动程序?我不清楚这一点. (The best documentation I can find on the subject仅提及打印机驱动程序可能会受到影响,即使打印后台处理程序在会话0中运行.)

即使进程已选中“允许服务与桌面交互”,打印为Windows服务也无法正常工作.

添加了粗体文字以抵消引起炫目的文本墙效果.

解决方法

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

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

如果您需要更多帮助,请再次询问.我已经构建了一个PowerShell脚本,该脚本在任务调度程序中运行,在福昕阅读器的帮助下打印pdf文件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读