Windows 10 系统自带 打印管理 导出 导入所有打印机驱动 或者 批处理;Windows 打印整套组件配套协作完整链路(分工、上下游调用关系、业务流转);二、各组件详细定位、上下游配套关系

Windows 打印整套组件配套协作完整链路(分工、上下游调用关系、业务流转)

一、组件总分类

  1. 前端人机交互层(用户操作入口)
     
    printui.exe、print.exe、PrintBrmUi.exe/ PrintBrm.exe
  2. 打印驱动安全隔离层(驱动沙盒)
     
    PrintIsolationHost.exe
  3. 打印格式转换处理层(渲染 / 滤镜流水线)
     
    printfilterpipelinesvc.exe
  4. 打印配置迁移引擎层(备份还原底层处理)
     
    PrintBrmEngine.exe
缩写说明:Brm = Backup Restore Manager

二、各组件详细定位、上下游配套关系

1. printui.exe — 图形打印管理 UI(人机交互前端)

路径:C:\Windows\System32\printui.exe
 
配套上下游:
  • 上游:资源管理器、设置、控制面板、右键打印机入口
  • 下游:
    1. 下发配置指令至打印后台服务 spoolsv.exe
    2. 添加 / 修改驱动时,自动拉起 PrintIsolationHost 加载驱动;
    3. 预览、打印首选项时,任务送入 printfilterpipelinesvc 做页面渲染转换。
       
      协作场景:添加打印机、驱动安装、打印首选项、管理打印队列、端口配置。

2. print.exe — 打印命令行控制台工具(批量运维前端)

路径:C:\Windows\System32\print.exe
 
配套上下游:
  • 上游:CMD/PowerShell、批处理脚本、自动化运维脚本
  • 下游:直接调用打印后台 spoolsv,提交打印文件、管理打印队列;
     
    批量任务同样走 printfilterpipelinesvc 执行页面转换。
     
    协作场景:命令行打印文件、暂停 / 恢复 / 删除打印作业、查询打印机状态。

3. PrintIsolationHost.exe — 打印驱动隔离宿主(安全沙盒中间层)

路径:C:\Windows\System32\PrintIsolationHost.exe
 
配套上下游:
  • 上游:spoolsv.exe、printui.exe、打印应用程序
  • 下游:驱动文件 (.inf/.dll)、printfilterpipelinesvc
     
    核心配套作用:
     
    Vista 引入打印驱动隔离架构,所有第三方打印驱动不在 spoolsv 主进程运行,全部载入独立 PrintIsolationHost 进程;
     
    驱动崩溃仅销毁隔离主机,不会造成打印后台、系统资源管理器卡死。
     
    printfilterpipelinesvc 内部滤镜插件也会依托该隔离宿主加载第三方滤镜。

4. printfilterpipelinesvc.exe — 打印过滤器管道服务(渲染转换核心处理层)

服务名:Print Filter Pipeline Service
 
路径:C:\Windows\System32\printfilterpipelinesvc.exe
 
配套上下游:
  • 上游:spoolsv 打印后台、PrintIsolationHost 隔离进程、各类应用打印任务
  • 下游:各类 XPS/EMF/PDF 渲染滤镜插件、物理打印机端口
     
    整套打印格式转换唯一流水线引擎:
     
    接收 EMF/XPS 页面数据,通过滤镜链完成:色彩转换、分页、水印、双面排版、转打印机原生语言 PCL/PostScript,处理完成后回传给打印后台送往打印机。
     
    所有可视化打印、PDF 打印、图片打印、特殊版式打印必须依赖该服务。

5. PrintBrmUi.exe — 打印备份还原图形界面(迁移前端 UI)

路径:C:\Windows\System32\PrintBrmUi.exe
 
配套上下游:
  • 上游:控制面板、管理员手动启动
  • 下游:调用底层 PrintBrmEngine.exe 执行打包 / 解包逻辑
     
    仅提供可视化向导,不具备数据处理能力,所有配置、驱动导出导入工作全部交给引擎执行。

6. PrintBrm.exe — 打印备份还原命令行工具(批量迁移运维入口)

路径:C:\Windows\System32\spool\tools\PrintBrm.exe
 
配套上下游:
  • 上游:CMD/PowerShell、域环境批量迁移脚本、装机自动化工具
  • 下游:调用 PrintBrmEngine.exe 内核引擎
     
    无 GUI,纯命令行参数控制,适合服务器批量、域控批量打印机配置迁移。

7. PrintBrmEngine.exe — 打印备份还原底层引擎(迁移数据处理内核)

路径:C:\Windows\System32\spool\tools\PrintBrmEngine.exe
 
配套上下游:
  • 上游:PrintBrmUi.exe、PrintBrm.exe(上层仅做参数转发)
  • 下游:读取系统打印注册表配置、驱动存储目录、打印端口信息,生成 .printerExport 备份包;还原时解包、注册驱动、重建打印机队列。
     
    整套打印迁移功能的唯一数据处理核心,上层 UI/CLI 均为外壳。

三、标准打印任务完整配套流转链路(文档打印)

  1. Word / 图片 / 浏览器发起打印 → 调用系统打印接口唤起 printui.exe 打印首选项界面
  2. 用户确认打印参数 → 任务提交至打印后台 spoolsv.exe
  3. spoolsv 将页面 EMF/XPS 数据送入 printfilterpipelinesvc.exe 滤镜管道
  4. printfilterpipelinesvc 加载对应格式滤镜做分页、色彩、版式转换
  5. 需要调用第三方打印驱动时,自动生成独立 PrintIsolationHost.exe 隔离进程加载驱动
  6. 滤镜管道将数据转为打印机识别语言(PCL/PS),回传 spoolsv
  7. spoolsv 通过 TCP/USB/ 并口发送至物理打印机完成输出
     
    任意一环失效都会出现:无法渲染、驱动崩溃、打印空白、服务闪退。

四、打印机批量迁移配套流转链路(备份还原)

  1. 管理员运行 PrintBrmUi.exe(图形)或 PrintBrm.exe(命令行)
  2. 前端程序传递备份 / 还原参数给底层 PrintBrmEngine.exe
  3. PrintBrmEngine 读取全系统打印机注册表、驱动文件、端口、打印首选项配置
  4. 打包生成独立备份文件;还原流程反向解析备份包,自动注册驱动、重建打印队列
     
    整套迁移三组件强绑定:UI/CLI 仅入口,Engine 为唯一处理内核,缺一不可完成批量打印环境迁移。

五、组件配套依赖故障联动说明

  1. printfilterpipelinesvc 服务停止 → 所有程序打印空白、无法渲染、PDF 打印失效;
  2. PrintIsolationHost 异常崩溃 → 第三方驱动打印直接报错,系统内置微软驱动不受影响;
  3. 删除 / 损坏 PrintBrmEngine.exe → PrintBrmUi、PrintBrm 均无法执行备份还原,直接报错退出;
  4. printui.exe 缺失 → 控制面板打印机界面无法打开,无法图形化管理驱动与队列;
  5. print.exe 缺失不影响图形打印,仅命令行批量打印、脚本自动化失效。

各打印组件完整英文全称、官方标准命名

1. printfilterpipelinesvc.exe

  • File Name:PrintFilterPipelineSvc.exe
  • Full Service Name:Print Filter Pipeline Service
  • Internal full English definition:Print Filter Pipeline Windows Service

2. PrintIsolationHost.exe

  • Full name:Print Isolation Host Process
  • Official concept:Print Driver Isolation Host

3. printui.exe

  • Full program name:Print User Interface Utility
  • Official internal title:PrintUI Application (Printer User Interface)

4. print.exe

  • Full name:Print Command-Line Utility
  • System formal name:Console Print Management Tool

5. PrintBrmUi.exe

  • Full name:Print Backup and Restore User Interface
  • Abbreviation origin:Print Backup Restore UI

6. PrintBrmEngine.exe

  • Full name:Print Backup and Restore Engine
  • Core definition:Print Backup Restore Processing Engine

7. PrintBrm.exe

  • Full name:Print Backup and Restore Command Line Tool
  • Short origin:Print Backup Restore CLI Binary

单词拆分释义(Brm 缩写来源)

Brm = Backup Restore Manager
 
PrintBrm = Print Backup Restore Manager
路径 描述 应用场景
C:\WINDOWS\System32\printfilterpipelinesvc.exe 打印过滤器管道服务(Print Filter Pipeline Service) 用于处理打印任务的过滤器管道,支持不同的打印格式转换和处理。
C:\WINDOWS\System32\PrintIsolationHost.exe 打印隔离主机 提供打印作业隔离环境,确保打印驱动程序的独立性,以减少对系统稳定性的影响。
C:\WINDOWS\System32\printui.exe 打印用户界面程序 提供图形化界面以管理打印机和打印队列,常用于添加、配置或删除打印机。
C:\WINDOWS\System32\print.exe 打印相关命令行工具 提供命令行功能来管理打印任务,如添加打印机、暂停或恢复打印任务等。
C:\WINDOWS\System32\PrintBrmUi.exe 打印备份与还原工具(Print Backup and Restore) 用于备份和恢复打印配置、打印机驱动程序等设置,常用于迁移或恢复打印环境。
C:\WINDOWS\System32\spool\tools\PrintBrmEngine.exe 打印备份引擎(Print Backup Engine) 用于处理打印备份和还原过程中的数据流,执行打印配置的存储与恢复。
C:\WINDOWS\System32\spool\tools\PrintBrm.exe 打印备份和还原命令行工具(Print Backup and Restore Command-line Tool) 提供命令行方式备份和恢复打印机配置及驱动程序,适用于批量操作。

这些工具和文件在 Windows 操作系统的打印管理中扮演着重要角色,帮助用户高效地管理打印任务、打印机配置和故障恢复等功能。


"C:\WINDOWS\System32\PrintBrmUi.exe"

PixPin_2025-10-02_22-48-11

"C:\WINDOWS\System32\spool\tools\PrintBrm.exe"

C:\Windows\System32\spool\tools>PrintBrm -?
错误: 必须选择单一模式!

通过命令行接口访问备份恢复迁移工具。

PrintBrm -B|R|Q [-S <server>] -F <file> [-D <directory>] [-O FORCE] [-P ALL|ORIG] [-NOBIN] [-LPR2TCP] [-C <config file>] [-NOACL] [-?]
-B               将服务器备份到指定的文件
-R               将文件中的配置恢复到服务器
-Q               查询服务器或备份文件
-S <服务器名称>    目标服务器
-F <文件名>       目标备份文件
-D <directory>   将备份文件解包到给定目录(使用 -R)或从给定目录再次打包备份文件(使用 -B)
-O FORCE         强制覆盖现有对象
-P ALL|ORIG      发布目录中的全部打印机,或者发布曾最初发布的打印机
-NOBIN           省略备份中的二进制文件
-LPR2TCP         在还原时将 LPR 端口转换为标准 TCP/IP 端口
-C <文件名>       使用 BRM 的指定的配置文件
-NOACL           从存储中的打印队列删除 ACL
-?               显示此帮助

PixPin_2025-10-02_22-50-37

PixPin_2026-04-16_11-12-00

"C:\WINDOWS\System32\printui.exe"

用法: rundll32 printui.dll,PrintUIEntry [options] [@commandfile]
   /a[file] 二进制文件名
   /b[name] 基本打印机名
   /c[name] 如果操作在远程机器上,unc 机器名
   /dl 删除本地打印机
   /dn 删除网络打印机连接
   /dd 删除打印机驱动程序
   /e 显示打印首选项
   /f[file] inf 文件或输出文件
   /F[file] 使用 /f 指定的 INF 文件可能依赖的 INF 文件的位置
   /ga 添加每个机器打印机连接(用户登录时此连接将传播到用户)
   /ge 枚举每个机器打印机连接
   /gd 删除每个机器打印机连接(用户登录时此连接将被删除)
   /h[arch] 驱动程序体系结构,为下列之一: x86 或 x64 或 Itanium 
   /ia 用 INF 文件安装打印机驱动程序
   /id 用添加打印机驱动程序向导安装打印机驱动程序
   /if 用 INF 文件安装打印机
   /ii 用带 INF 文件的添加打印机向导安装打印机
   /il 用添加打印机向导安装打印机
   /im 使用添加打印机向导安装打印机时,跳过网络列出的打印机
   /in 添加网络打印机连接
   /ip 使用网络打印机安装向导安装打印机
   /j[provider] 打印提供程序名称
   /k 安装打印机时将测试页打印到指定打印机,不能与命令组合使用
   /l[path] 打印机驱动程序源路径
   /m[model] 打印机驱动程序型号名称
   /n[name] 打印机名称
   /o 显示打印机队列视图
   /p 显示打印机属性
   /q 安静模式,不显示错误消息
   /r[port] 端口名称
   /s 显示服务器属性
   /Ss 将打印机设置存储到文件
   /Sr 从文件还原打印机设置
   存储或还原必须放在命令末尾的打印机设置选项标志:
	2	PRINTER_INFO_2
	7	PRINTER_INFO_7
	c	颜色配置文件
	d	PrinterData
	s	安全描述符
	g	全局 DevMode
	m	最低设置
	u	用户 DevMode
	r	解决名称冲突
	f	强制使用名称
	p	解析端口
	i	驱动程序名称冲突
   /u 使用现有打印机驱动程序(如果已安装)
   /t[#] 起始的从零开始的索引页
   /v[version] 驱动程序版本,为下列之一:“类型 2 - 内核模式”或“类型 3 - 用户模式”
   /w 如果在 inf 中找不到指定的驱动程序,则提示用户找一个驱动程序
   /y 将打印机设置为默认打印机
   /Xg 获取打印机设置
   /Xs 设置打印机设置
   /z 不自动共享此打印机
   /Y 不自动生成打印机名称
   /K 更改 /h 的含义,使其接受 2、3、4 (分别代表 x86、x64 或 Itanium),并更改 /v 的含义,使其接受 3 (代表“类型 3 - 用户模式”)
   /Z 共享此打印机,只能与 /if 选项一起使用
   /? 提供此消息的帮助
   @[file] 命令行参数文件
   /Mw[message] 提交命令之前显示警告消息
   /Mq[message] 提交命令之前显示确认消息
   /W[flags] 指定向导(用于 APW 和 APDW)的标志和开关
	r	使向导可以从上一页重新启动
   /G[flags] 指定全局标志和开关
	w	禁止显示安装驱动程序警告 UI (超安静模式)
   /R 强制使用所选驱动程序替换现有驱动程序

例如:
   运行服务器属性: 
rundll32 printui.dll,PrintUIEntry /s /t1 /c\\machine
   运行打印机属性: 
rundll32 printui.dll,PrintUIEntry /p /n\\machine\printer
   本地运行添加打印机向导: 
rundll32 printui.dll,PrintUIEntry /il 
   在 \\machine: 
rundll32 printui.dll,PrintUIEntry /im /c\\machine 上运行添加打印机向导
   运行队列查看: 
rundll32 printui.dll,PrintUIEntry /o /n\\machine\printer
   运行 INF 安装: 
rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /f c:\infpath\infFile.inf /r "lpt1:" /m "Brother DCP-128C"
   运行 INF 安装(具有 INF 依赖关系)。在此示例中,prnbr002.inf 依赖于 ntprint.inf
rundll32 printui.dll, PrintUIEntry /ia /m "Brother DCP-128C" /K /h x64 /v 3 /f "c:\infpath\prnbr002.inf" /F "c:\infpath\ntprint.inf"
   使用 INF 运行添加打印机向导: 
rundll32 printui.dll,PrintUIEntry /ii /f c:\infpath\infFile.inf
   使用内置打印机驱动程序添加打印机: 
rundll32 printui.dll,PrintUIEntry /if /b "Test Printer" /r "lpt1:" /m "Brother DCP-128C"
   添加每个机器打印机连接(用户登录时此连接将传播到用户): 
rundll32 printui.dll,PrintUIEntry /ga /c\\machine /n\\machine\printer /j"LanMan Print Services"
   删除每个机器打印机连接(用户登录时此连接将被删除): 
rundll32 printui.dll,PrintUIEntry /gd /c\\machine /n\\machine\printer
   枚举每个机器打印机连接: 
rundll32 printui.dll,PrintUIEntry /ge /c\\machine
   使用 INF 添加打印机驱动程序: 
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "x86" /v "Type 3 - User Mode" /f c:\infpath\infFile.inf
   使用 INF 添加打印机驱动程序: 
rundll32 printui.dll,PrintUIEntry /ia /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
   添加内置打印机驱动程序: 
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "Intel" /v "Type 3 - Kernel Mode"
   删除打印机驱动程序: 
rundll32 printui.dll,PrintUIEntry /dd /c\\machine /m "Brother DCP-128C" /h "x86" /v "Type 3 - User Mode"
   删除打印机驱动程序: 
rundll32 printui.dll,PrintUIEntry /dd /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
   将打印机设置为默认打印机: 
rundll32 printui.dll,PrintUIEntry /y /n "printer"
   设置打印机注解: 
rundll32 printui.dll,PrintUIEntry /Xs /n  "printer" comment "My Cool Printer"
   取得打印机设置: 
rundll32 printui.dll,PrintUIEntry /Xg /n "printer"
   取得文件中的打印机设置保存结果: 
rundll32 printui.dll,PrintUIEntry /f "results.txt" /Xg /n "printer"
   设置打印机设置命令使用:
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ?
   将所有打印机设置存入一个文件: 
rundll32 printui.dll,PrintUIEntry /Xs /n "printer" ?
   从一个文件还原所有打印机设置: 
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat"
   将二级打印机信息存入一个文件: 
rundll32 printui.dll,PrintUIEntry /Ss /n "printer" /a "file.dat" 2
   从一个文件还原打印机安全描述符: 
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" s
   从一个文件还原打印机全局 devmode 和打印机数据: 
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" g d
   从文件最少设置还原并分析端口名: 
rundll32 printui.dll,PrintUIEntry /Sr /n "printer" /a "file.dat" m p
   启用打印机的客户端呈现: 
rundll32 printui.dll,PrintUIEntry /Xs /n"printer" ClientSideRender enabled
   禁用打印机的客户端呈现: 
rundll32 printui.dll,PrintUIEntry /Xs /n"printer" ClientSideRender disabled

PixPin_2025-10-02_22-51-27

PixPin_2025-10-02_22-51-41

PixPin_2025-10-02_22-51-48

 

PixPin_2026-04-16_10-55-14

PixPin_2026-04-16_10-55-29

PixPin_2026-04-16_10-55-42

PixPin_2026-04-16_10-55-54

 

Windows打印管理的版本年代和功能更新如下:

Windows XP:拥有一个简单版的打印机管理工具,可以用于添加和删除本地打印机。
Windows Vista / 7 / 8 / 8.1:在XP的基础上增加了更多高级管理功能,如共享打印机、设置默认打印机、监控打印队列、设置打印机安全权限等。
Windows 10:在Vista/7/8/8.1的基础上进一步升级,增加了一些新功能,如云打印、安装和管理打印机驱动、设置自定义打印优先级、支持Wi-Fi Direct打印等。


编写批处理脚本,实现将Windows 10系统中所有打印机的驱动导出:

@echo off
set EXPORT_PATH=C:\PrinterDrivers

if not exist %EXPORT_PATH% (
  mkdir %EXPORT_PATH%
)

for /f "tokens=2 delims==\" %%a in ('wmic printer get drivername /value ^| findstr "DriverName"') do (
  echo Exporting %%a...
  rundll32 printui.dll,PrintUIEntry /e /q /m "%%a" /h "x64" /f "%EXPORT_PATH%\%%a.inf"
)

echo All printer drivers have been exported to %EXPORT_PATH%.
在这个脚本中,首先设置了一个变量EXPORT_PATH,用于指定导出文件的保存路径。然后通过for命令遍历系统中所有的打印机驱动,并利用rundll32命令和PrintUIEntry函数将每个驱动导出到指定路径下的.inf文件中。最后输出完成信息。

注意,该脚本需要在管理员权限下运行,否则可能会出现权限不足的错误。

------------

 

使用以下代码编写批处理脚本,实现将之前导出的所有打印机驱动批量导入到Windows 10系统中:

@echo off
set IMPORT_PATH=C:\PrinterDrivers

for %%f in (%IMPORT_PATH%\*.inf) do (
  echo Installing driver %%~nxf...
  rundll32 printui.dll,PrintUIEntry /ia /c\\%COMPUTERNAME% /m "%%~nxf" /h "x64" /v 3 /f "%%f"
)

echo All printer drivers have been imported from %IMPORT_PATH%.
在这个脚本中,首先设置了一个变量IMPORT_PATH,用于指定导入文件所在的路径。然后通过for命令遍历该路径下所有的.inf文件,并利用rundll32命令和PrintUIEntry函数逐个安装打印机驱动到系统中。最后输出完成信息。

注意,该脚本需要在管理员权限下运行,否则可能会出现权限不足的错误。

posted @ 2023-06-19 18:25  suv789  阅读(1914)  评论(0)    收藏  举报