路径

描述

应用场景

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"

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

C:\Windows\System32\spool\tools>PrintBrm -?

错误: 必须选择单一模式!

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

PrintBrm -B|R|Q [-S ] -F [-D ] [-O FORCE] [-P ALL|ORIG] [-NOBIN] [-LPR2TCP] [-C ] [-NOACL] [-?]

-B 将服务器备份到指定的文件

-R 将文件中的配置恢复到服务器

-Q 查询服务器或备份文件

-S <服务器名称> 目标服务器

-F <文件名> 目标备份文件

-D 将备份文件解包到给定目录(使用 -R)或从给定目录再次打包备份文件(使用 -B)

-O FORCE 强制覆盖现有对象

-P ALL|ORIG 发布目录中的全部打印机,或者发布曾最初发布的打印机

-NOBIN 省略备份中的二进制文件

-LPR2TCP 在还原时将 LPR 端口转换为标准 TCP/IP 端口

-C <文件名> 使用 BRM 的指定的配置文件

-NOACL 从存储中的打印队列删除 ACL

-? 显示此帮助

"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

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

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

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

@echo offset 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 offset 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函数逐个安装打印机驱动到系统中。最后输出完成信息。

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