我有一台 Windows 7 x86 系统和一台在我的工作组中公开共享的打印机。当我尝试从 Windows 2000 Pro sp4 框打印到该打印机时,打印作业进入打印机队列,但随后挂起打印队列。
从这两个系统,您都可以查看打印作业,但作业永远不会打印,直到您重新启动 Windows 7 主机系统。此外,您也无法删除打印作业,直到您重新启动主机 Windows 7 系统。
Win2K 框中的打印作业之后传入的所有打印作业都会被挂起,等待卡住的作业打印。
我该如何解决此问题?这是一个已知问题吗?我使用的系统是否相距太远,并且使用的方言不够接近同一种语言?
答案1
拉斯,
如果您在 Windows 7 主机上配置以下策略,它应该可以工作。
本地计算机策略\管理模板\打印机
允许打印后台处理程序接受客户端连接 > 启用
用户配置\管理模板\控制面板\打印机\
指向和打印限制 > 禁用
另一个解决方案是禁用 Windows 7 的 UAC 控制...我相信这也可以解决打印队列的“挂断”问题。
答案2
TheCleaner 的答案,希望这将完全消除采取进一步行动的需要。但是,如果这不能解决问题,则很少需要重新启动来修复挂起的打印队列。通常,在大多数情况下,只需停止打印后台处理程序服务,终止 spoolsv.exe 进程(必要时强制),然后再次启动打印后台处理程序服务就足够了。这也可以通过脚本编写或从命令行实现,如下所示:
net stop spooler taskkill /im spoolsv.exe taskkill /f /im spoolsv.exe net start spooler
虽然不是最理想的,但它并不像重新启动机器那样麻烦,只是为了让您的打印后台处理程序再次运行。您还可以更有创意地设置一个每隔几分钟运行一次的任务,以查看打印后台处理程序是否确实在执行其应执行的操作,如果没有,则发出上述命令使其重新启动并运行。
顺便提一下,自从 Windows 打印后台处理程序出现以来,它就一直非常脆弱,因此,听到最新版本仍然因任何原因挂起,我感到相当失望(尽管我也不感到惊讶)。顺便说一句,上述快速而粗糙的修复方法可以应用于每个“非 DOS”版本的 Windows。请注意,尽管“taskkill”命令仅在 XP 中首次引入,但资源工具包工具“kill”可以代替它。