Printer Maestro 服务无法启动,重打印控制台无法打印,出现 CLSID 错误:类未注册
症状
尝试启动 Printer Maestro 服务时,服务会拒绝启动,并显示一个比较模糊的错误信息。
如果你在事件查看器的应用程序日志下查看,会发现一条错误信息,提示 COMException,说明 CLSID 未注册。
无法启动服务。System.Runtime.InteropServices.COMException (0x80040154):
获取 CLSID 为 {EAC071C3-2CC4-4201-9B5D-76E209673C10} 的组件的 COM 类工厂失败,原因如下:
80040154 类未注册(来自 HRESULT 的异常:0x80040154 (REGDB_E_CLASSNOTREG))。
在 Maestro.Service.MaestroService.OnStart(String[] args)
在 System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)
在分析系统的打印机配置文件时,我们的驱动程序版本显示为 v1.0
安装日志或其他地方没有出现其他错误。
由于 Maestro 服务无法启动,重打印控制台会将所有打印作业状态显示为“未知”,并且不允许用户进行任何重打印。任何依赖 Maestro 打印机数据的服务也会错误地将所有打印机列为“未知”。
适用环境
BarTender 2019 及更高版本
Seagull 驱动程序
原因分析
在 BarTender 和我们的驱动程序之下,有一个驱动自动化库(DAL)。DAL 通常有两种安装方式:
- 随 Seagull 驱动程序一起安装
- 随 BarTender 一起安装,通常用于 Printer Maestro
DAL 是一组注册表项,用于向我们的驱动程序和依赖状态及驱动信息的系统报告打印机状态。依赖这些信息的主要组件有 Printer Maestro、重打印控制台和历史记录浏览器中的打印机部分。在一定程度上,集成服务也可能依赖于此。
如何找到 DAL
DAL 位于注册表中的特定 CSLID 下:
HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{EAC071C3-2CC4-4201-9B5D-76E209673C10}
在 Printer Maestro 服务出现未注册错误的情况下,DAL 未能成功注册,整个 CSLID 都缺失。这可能是由于厂商打印机驱动与 Seagull 驱动之间的冲突导致的,但也可能有其他原因。
这不是一个常见问题。
如何修复 DAL 问题
DAL 必须通过自动化流程添加。不能通过手动创建注册表项来添加。
重新安装打印机驱动程序
第一步是将受影响的打印机从系统中彻底移除。
- 如果还没有操作,请从我们的网站下载驱动安装程序并解压。
- 如果已经解压,直接在文件夹中运行 DriverWizard.exe
- 选择“移除打印机驱动程序”
- 选择“使用高级打印机驱动移除选项”
- 勾选所有使用 Seagull 驱动的打印机,点击“下一步”
- 匹配的驱动会被选中。对于某些型号,如果有厂商驱动,也一并移除。
- 继续点击“下一步”,向导会自动填写其他选项。
- 到最后一步时,点击“完成”以彻底移除驱动。
- 重启电脑以完成操作。不要跳过此步骤。
- 使用向导重新安装打印机。如果有多台打印机,建议先安装一台。
系统中至少有一台打印机后,尝试重新启动 Printer Maestro 服务。如果服务仍无法启动,请继续下一步。
修复 Printer Maestro
你可以通过以下方式修复 Printer Maestro:
- 进入“添加/删除程序”或控制面板中的相应选项。
- 选择 BarTender。
- 点击“修改”按钮。
- 在菜单中选择“修复”。
修复完成后,在 Windows 服务列表中检查 Maestro 服务是否已启动并正常运行。
关于修复 DAL 问题的说明
此修复方法不具备追溯性。DAL 出现故障期间处理的作业,其状态仍会显示为“未知”,且无法在重打印控制台中重打。此修复仅对后续的打印作业有效。
修复后如果检查注册表,可能仍然看不到 DAL 的相关项。只要 Maestro 服务正在运行,并且能正确向重打印控制台报告打印机状态,就可以认为 DAL 已正确注册。