Car*_*arl 3 windows printer printing
我有一台 Server 2003 机器作为大约 20 台打印机的打印服务器。我们遇到了 1 台打印机的问题,它的队列中有 104 个文档。
我尝试了“取消所有文档”并尝试手动取消单个文档但没有成功。
打印作业在其状态下显示“正在删除 - 发送到打印机”。这种状态已经持续了大约 2 个小时。
我不相信在不影响其他打印机的情况下重新启动假脱机是一个选项,我们为特定的非 Windows 打印友好应用程序保留了打印机,我不能在其中丢失作业。
弹回假脱机服务是我所知道的唯一可行的选择。根据我的经验,某些作业在队列中“阻塞”得如此“严重”,以至于需要停止后台处理程序服务器,从 %SystemRoot%\System32\Spool\Printers 文件夹中清除代表作业的文件,然后重新启动后台处理程序服务。
您不会因为退回假脱机服务而丢失任何已经排队等待其他打印机的作业(您可以自己在另一台服务器或客户端上演示这一点——暂停打印机,将一些作业放入队列中,然后停止/重新启动spooler 服务),但是如果您发现必须从假脱机目录中删除作业文件,您将很难在您打算保留的作业的其他假脱机文件中找到它们。
(顺便说一句:Microsoft 可以对打印后台处理程序服务 IMO进行很多增强,以缓解您所看到的情况。在 Windows 的最后几个版本中,打印后台处理程序服务一直处于相对较少增强的状态。印刷并不性感,但通常对业务至关重要。)
编辑:
每个打印作业在假脱机目录中由“.SPL”文件(包含 EMF 或原始格式的打印作业数据)和匹配的“.SHD”文件表示,其中包含有关作业的“标题”信息。此标头信息文件包含有关将作业发送到哪台打印机的详细信息。
删除给定打印作业的“SPL”和“SHD”文件的匹配对会有效地删除该作业。
不幸的是,“.SHD”文件的格式没有正式记录(请参阅http://www.undocprint.org/formats/winspool/shd以获取一些逆向工程文档),因此要弄清楚假脱机中的“哪个文件是哪个”目录并仅删除“损坏的”打印作业非常困难,充其量。从我所见,目标打印队列名称在该“SHD”文件中作为未编码字符串,因此我认为可以使用命令行工具行“strings”和“findstr”将脚本拼凑在一起以进行 grovel通过所有“.SHD”文件查找指定给“问题”打印机的作业并删除它们,同时不影响其他打印机的作业。
对假脱机文件的任何操作都必须在假脱机服务停止的情况下完成,因为当它运行时,文件被锁定。
归档时间: |
|
查看次数: |
85233 次 |
最近记录: |