无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 21191|回复: 51

[分享] 关于Win10的打印组件

    [复制链接]
发表于 2019-6-9 18:31:40 | 显示全部楼层 |阅读模式
本帖最后由 hhh333 于 2019-7-14 17:56 编辑

一、 注册表
1、控制及类
pe-sys\ControlSet001\Control\Print
pe-sys\ControlSet001\Control\Class\{1ed2bbf9-11f0-4084-b21f-ad83a8e6dcdc}
pe-sys\ControlSet001\Control\Class\{4658ee7e-f050-11d1-b6bd-00c04fa372a7}
pe-sys\ControlSet001\Control\Class\{49ce6ac8-6f86-11d2-b1e5-0080c72e74a2}
pe-sys\ControlSet001\Control\Class\{4d36e979-e325-11ce-bfc1-08002be10318}
pe-sys\ControlSet001\Control\Class\{c30ecea0-11ef-4ef9-b02e-6af81e6e65c0}
pe-sys\ControlSet001\Control\Class\{c7bc9b22-21f0-4f0d-9bb6-66c229b8cd33}
2、服务
pe-sys\ControlSet001\Services\Spooler
pe-sys\ControlSet001\Services\usbprint(注意,如果组件外置,这一项不要,系统注册表中有的话也要删除)
3、usbprint.inf安装包数据库记录(这一步不是必须)
用RegWorkshop在pe-sys\DriverDatabase位置查找usbprint.inf再导出备用

以上三项均从INSTALL.WIM的SYSTEM中提取。
二、 文件列表
可以分成三部分
1、 设备与打印机
Windows
│  splwow64.exe
│  
├─inf
│      c_pnpprinters.inf
│      c_printer.inf
│      PrintQueue.inf
│      printupg.inf
│      usbprint.inf
│      
├─PrintDialog(注:整个目录,但似乎没什么用)
│         
└─System32
    │  AppMon.dll
    │  bidispl.dll
    │  compstui.dll
    │  DafPrintProvider.dll
    │  defaultdevicemanager.dll
    │  defaultprinterprovider.dll
    │  DevDispItemProvider.dll
    │  DeveloperOptionsSettingsHandlers.dll
    │  deviceassociation.dll
    │  DeviceCenter.dll
    │  DeviceDisplayStatusManager.dll
    │  DeviceDriverRetrievalClient.dll
    │  DeviceEject.exe
    │  DeviceElementSource.dll
    │  DeviceEnroller.exe
    │  DeviceMetadataRetrievalClient.dll
    │  DevicePairing.dll
    │  DevicePairingFolder.dll
    │  DevicePairingProxy.dll
    │  DevicePairingWizard.exe
    │  deviceregistration.dll
    │  DeviceSetupManager.dll
    │  DeviceSetupManagerAPI.dll
    │  DeviceSetupStatusProvider.dll
    │  DevicesFlowBroker.dll
    │  DeviceUxRes.dll
    │  devinv.dll
    │  DevPropMgr.dll
    │  DevQueryBroker.dll
    │  efswrt.dll
    │  FaxPrinterInstaller.dll
    │  FdDevQuery.dll
    │  fdPnp.dll
    │  fdprint.dll
    │  fdWNet.dll
    │  fdWSD.dll
    │  findnetprinters.dll
    │  fundisc.dll
    │  fxsapi.dll
    │  FXSMON.dll
    │  FXSRESM.dll
    │  gpprnext.dll
    │  hgprint.dll
    │  icm32.dll
    │  icmui.dll
    │  inetpp.dll
    │  inetppui.dll
    │  IPPMon.dll
    │  localspl.dll
    │  localui.dll
    │  mgmtapi.dll
    │  newdev.exe
    │  ntprint.dll
    │  ntprint.exe
    │  OpcServices.dll
    │  pcl.sep
    │  print.exe
    │  PrintBrmUi.exe
    │  PrintDialogHost.exe
    │  PrintDialogs.dll
    │  printfilterpipelineprxy.dll
    │  printfilterpipelinesvc.exe
    │  PrintIsolationHost.exe
    │  PrintIsolationProxy.dll
    │  printmanagement.msc
    │  PrintPlatformConfig.dll
    │  PrintRenderAPIHost.DLL
    │  printui.dll
    │  printui.exe
    │  PrintWSDAHost.dll
    │  prncache.dll
    │  prnfldr.dll
    │  prnntfy.dll
    │  prntvpt.dll
    │  pscript.sep
    │  puiapi.dll
    │  puiobj.dll
    │  rasadhlp.dll
    │  RepCurUser.cmd
    │  ReSpooler.cmd
    │  serialui.dll
    │  spoolss.dll
    │  spoolsv.exe
    │  srclient.dll
    │  srcore.dll
    │  sysprint.sep
    │  sysprtj.sep
    │  tcpmon.ini
    │  umb.dll
    │  usbmon.dll
    │  webservices.dll
    │  win32spl.dll
    │  Windows.Devices.Printers.dll
    │  Windows.Devices.Printers.Extensions.dll
    │  Windows.Graphics.dll
    │  Windows.Graphics.Printing.3D.dll
    │  Windows.Graphics.Printing.dll
    │  Windows.Internal.Shell.Broker.dll
    │  WLIDNSP.DLL
    │  WlS0WndH.dll
    │  WSDApi.dll
    │  WSDMon.dll(1903没有了)
    │  wsdprintproxy.dll
    │  WSDScanProxy.dll
    │  XpsDocumentTargetPrint.dll
    │  XpsFilt.dll
    │  XpsGdiConverter.dll
    │  XpsPrint.dll
    │  XpsRasterService.dll
    │  XPSServiceS.DLL
    │  XPSSHHDR.dll
    │  xwizard.exe
    │  xwizards.dll
    │  xwtpdui.dll
    │  xwtpw32.dll
    │  
    ├─CatRoot
    │  └─{F750E6C3-38EE-11D1-85E5-00C04FC295EE}(注:含Print字符的cat文件,其中~zh-cn类型的都可以不要)
    │         
    ├─drivers
    │      usbprint.sys
    │      
    ├─driverstore
    │  ├─en-US
    │  │      c_dot4print.inf_loc
    │  │      c_pnpprinters.inf_loc
    │  │      c_printer.inf_loc
    │  │      c_receiptprinter.inf_loc
    │  │      
    │  ├─FileRepository
    │  │  ├─c_dot4print.inf_x86_3a482d7106e67af5
    │  │  │      c_dot4print.inf
    │  │  │      
    │  │  ├─c_pnpprinters.inf_x86_332e93a45a3e656a
    │  │  │      c_pnpprinters.inf
    │  │  │      
    │  │  ├─c_printer.inf_x86_e6ba9e11e6380557
    │  │  │      c_printer.inf
    │  │  │      
    │  │  ├─c_receiptprinter.inf_x86_f0322e57fec0dc81
    │  │  │      c_receiptprinter.inf
    │  │  │      
    │  │  ├─printqueue.inf_x86_5599cddb064d37cf
    │  │  │      printqueue.inf
    │  │  │      
    │  │  └─usbprint.inf_x86_08d44a3fd742371d
    │  │          usbprint.inf
    │  │          usbprint.sys
    │  │         
    │  └─zh-CN
    │          bthprint.inf_loc
    │          PrintQueue.inf_loc
    │          usbprint.inf_loc
    │         
    ├─spool(整个目录)
    │              
    └─zh-CN(下面对应的文件)

2、 基本驱动
Windows
├─INF
│      ntprint.inf
│      ntprint4.inf
│      tsprint.inf
│      wsdprint.inf
│      
└─System32
    ├─catroot
    │  └─{F750E6C3-38EE-11D1-85E5-00C04FC295EE}
    │          ntprint.cat
    │          ntprint4.cat
    │         
    └─DriverStore
        ├─en-US
        │      ntprint4.inf_loc
        ├─FileRepository
        │  ├─ntprint.inf_x86_ab738c05d09b470b
        │  ├─ntprint4.inf_x86_9d6305e59342bba1
        │  ├─tsprint.inf_x86_af7e87be969e4e2c
        │  └─wsdprint.inf_x86_69b253d182b5dd8c
        └─zh-CN
                ntprint.inf_loc
                tsprint.inf_loc
                WSDPrint.inf_loc
3、 系统集成驱动
Windows
└─System32
    ├─CatRoot
  │  └─{F750E6C3-38EE-11D1-85E5-00C04FC295EE}中PRN开头的数据
      └─DriverStore
          └─FileRepository下以PRN开头的目录

三、 处理
1、 注册表导入
把上述三项注册表导入PE的system中。
2、 spoolsv.exe的破解
因为HKEY_LOCAL_MACHINE\SYSTEM\Setup\SystemSetupInProgress=0打印才能开启,但影响装显卡等其他驱动。用二进制编辑器打开spoolsv.exe,搜索Unicode编码SystemSetupInProgress,这个串随便改动其中的任何一个字母就行。(18362似乎找不到也不需要破解)
也可以用PECMD的命令PUTF %Windir%\System32\spoolsv.exe,0x2D0C,0x54来修改的一个字母,其中偏移位置先找出来。
3、 安装的核心命令:
解压上述文件到系统中
ntprint.exe
net start spooler
PnPutil.exe -i -a "%Windir%\inf\usbprint.inf”
注意,如果数据库中没登记,可以直接PECMD脚本安装:FORX @%Windir%\System32\DriverStore\FileRepository\usbprint.inf*,inf,1,exec =*drvload.exe "%inf%\usbprint.inf"


如果你的打印机系统中已经集成,则可以直接使用了,如果没有可以自备驱动到设备管理中安装,或者可以安装网络共享的打印机,因为组件已经安装好了。
以上文件列表及方法以16299为蓝本。近期看18362去掉了好多系统自带驱动,如我的HPM1005一体机就没有自带驱动了。

评分

参与人数 7无忧币 +40 收起 理由
zhczf + 5 很给力!
whyme22 + 10
WAIGO + 5 真厉害,非常值得参考!
freesoft00 + 5
9zhmke + 5 佩服!这得花上多少时间啊
立帮电子 + 5 很给力!
danmo + 5 很给力!

查看全部评分

 楼主| 发表于 2019-6-10 18:49:52 | 显示全部楼层
其实我发布的PE中一直有外置的打印组件,见有人问起,因此总结了一下共享出来。
回复

使用道具 举报

 楼主| 发表于 2019-7-7 16:26:56 | 显示全部楼层
slore 发表于 2019-6-11 14:49
WimBuilder2\Projects\WIN10XPE\01-Components\Printer\main.bat

终于发现了,一个看花眼导致1903打印组件一个月都安装不上,现在可以了。

点评

哈哈,可能又错了,1903还是不行,但刚才成功是因为在1093中使用了全套的16299中的文件,两个虚拟打印机装上了。歪打正着,眼睛看花拷错文件了,反而装上了。  详情 回复 发表于 2019-7-7 16:49
哦,1楼更新了。我试试。  发表于 2019-7-7 16:34
具体是啥啊?文件不对,还是注册表项目?  发表于 2019-7-7 16:33
回复

使用道具 举报

 楼主| 发表于 2019-7-7 16:49:21 | 显示全部楼层
hhh333 发表于 2019-7-7 16:26
终于发现了,一个看花眼导致1903打印组件一个月都安装不上,现在可以了。

哈哈,可能又错了,1903还是不行,但刚才成功是因为在1093中使用了全套的16299中的文件,两个虚拟打印机装上了。歪打正着,眼睛看花拷错文件了,反而装上了。
回复

使用道具 举报

 楼主| 发表于 2019-7-7 20:16:48 | 显示全部楼层
本帖最后由 hhh333 于 2019-7-7 20:19 编辑

1、注册表没变为1903的
2、基本驱动没变也为1903的
3、设备与打印弄错了用了1709的

安装usbprint.inf,就直接驱动上了两个虚拟打印机,大家判断一下是一个什么情况。初步确定1903虚拟打印不能自动安装是文件的问题,与注册表无关。1903的打印安装机制可能变了。

点评

你这个到啥版本(16299?)为止可以创建出2个虚拟打印机? v1903太新了不说,RS5可以么。 我照800MB的全功能PE,补了个别文件,PDF和XPS打印机还是没有, 但是手动添加打印机可以点了。。。不过我没真实打印机测试  详情 回复 发表于 2019-7-13 22:45
回复

使用道具 举报

 楼主| 发表于 2019-7-14 07:30:36 | 显示全部楼层
本帖最后由 hhh333 于 2019-7-14 07:31 编辑
slore 发表于 2019-7-13 22:45
你这个到啥版本(16299?)为止可以创建出2个虚拟打印机?
v1903太新了不说,RS5可以么。


我把文件列表部分用1709的打包成print.7z,其他部分如基本驱动和注册表用1903的,安装usbprint.inf,那两个驱动就自动在打印队列中出现了。真实打印机也能正常使用。感觉到这个组件独立性还是比较强的。RS5没研究,应该与1709一样。1903有一定变化。
回复

使用道具 举报

 楼主| 发表于 2019-7-14 11:44:59 | 显示全部楼层
1903正常系统中也看了,在设备和打印中显示驱动程序有问题,但可以正常打印。用DISM++把驱动倒出来在PE中可以装,但打印时提示打印设置有问题,估计两个虚拟驱动能装上可能实体机也会正常。
w10-1903-print.png
回复

使用道具 举报

 楼主| 发表于 2019-7-14 17:55:53 | 显示全部楼层
slore 发表于 2019-7-13 22:45
你这个到啥版本(16299?)为止可以创建出2个虚拟打印机?
v1903太新了不说,RS5可以么。

应该是从spoolsv.exe不需要破解开始,看了一下,是1809开始,1803都是可以的
回复

使用道具 举报

 楼主| 发表于 2019-11-7 18:46:08 | 显示全部楼层
本帖最后由 hhh333 于 2019-11-7 19:01 编辑

确实是一条注册表就可以了:一是两个虚拟打印机装上了,二是确实能够打印了,三是与SystemSetupInProgress没什么关系。
好家伙,困了我们几个月,为slore 点赞!

只试了word,记事本没试,应该是没问题的,明天上班再试一下。
回复

使用道具 举报

 楼主| 发表于 2019-11-7 18:59:27 | 显示全部楼层
红毛樱木 发表于 2019-11-6 17:30
1903(1909)只改这一个注册表,用记事本打印,显示参数错误

什么时候把Win10builder也更新一下?

点评

正在搞,动的比较多,winbuilder有些东西受限,在用pecmd写一些函数功能  详情 回复 发表于 2019-11-7 19:33
回复

使用道具 举报

 楼主| 发表于 2019-11-9 10:49:59 | 显示全部楼层
红毛樱木 发表于 2019-11-7 19:33
正在搞,动的比较多,winbuilder有些东西受限,在用pecmd写一些函数功能

加那个键值后,word excel打印都没有问题,但记事本打印出现参数错误,不知什么原因。

点评

win10builder我记得之前发给你过svn地址的呀,你看下站内消息,可以一起折腾的  详情 回复 发表于 2019-11-9 11:43
我用的WPS 2010不能打印,有空再研究  详情 回复 发表于 2019-11-9 11:37
我只测试了记事本。。。是OK的。  发表于 2019-11-9 11:04
回复

使用道具 举报

 楼主| 发表于 2019-11-30 16:32:11 | 显示全部楼层
经测试,并不是记事本不能打印,而是新的记事本可能默认使用雅黑字体,所以打印时出现参数错误。同时使用word有的文件也不能打印,发现也是用了非宋体。这些都是使用精简字体引起。

点评

跌坑里那么久也不提个醒,我今天搞了半天才发现。  详情 回复 发表于 2019-11-30 23:43
恩,打印功能不能使用精简字体。为了快速测试,30秒一次,我也勾选了【精简字体】,这里当时坑了我好久。。。  发表于 2019-11-30 23:33
干脆不精简了,两个完整文件打包成WIM后多15M而已  详情 回复 发表于 2019-11-30 23:23
我不会精简字体,你有没有试过用当前PE版本对应的系统里完整的雅黑精简呢?  发表于 2019-11-30 22:52
厉害,这下知道问题了。  发表于 2019-11-30 16:33
回复

使用道具 举报

 楼主| 发表于 2019-11-30 23:23:09 | 显示全部楼层
hhh333 发表于 2019-11-30 16:32
经测试,并不是记事本不能打印,而是新的记事本可能默认使用雅黑字体,所以打印时出现参数错误。同时使用w ...

干脆不精简了,两个完整文件打包成WIM后多15M而已

点评

肯定不行吧?字体文件是系统的核心,一般会保护的。  详情 回复 发表于 2019-11-30 23:32
不内置,放外置打印机组件里,启动打印机的时候覆盖替换成完整版字体,这样行不?  发表于 2019-11-30 23:24
回复

使用道具 举报

 楼主| 发表于 2019-11-30 23:32:28 | 显示全部楼层
hhh333 发表于 2019-11-30 23:23
干脆不精简了,两个完整文件打包成WIM后多15M而已

肯定不行吧?字体文件是系统的核心,一般会保护的。
回复

使用道具 举报

 楼主| 发表于 2019-11-30 23:43:16 | 显示全部楼层
本帖最后由 hhh333 于 2019-11-30 23:50 编辑
hhh333 发表于 2019-11-30 16:32
经测试,并不是记事本不能打印,而是新的记事本可能默认使用雅黑字体,所以打印时出现参数错误。同时使用w ...

跌坑里那么久也不提个醒,我今天搞了半天才发现。

今天刚好在PE中弄那个摄像头,领导要打印前两天的一个文档,直接在PE中打印,打印机不提示也不动,再发空白文档,打印机可以打,再输几个字也可以打。至此怀疑是字体的问题,马上打开原文件,使用的是等线体,全选改宋体就可以打印。又把内核换原版字体,再试记事本也可以打了。

点评

呵呵,暗门啊  详情 回复 发表于 2019-12-1 08:49
我的脚本里面有,打印组件有效时,禁用精简字体啊。  发表于 2019-12-1 01:09
回复

使用道具 举报

 楼主| 发表于 2019-12-1 08:49:59 | 显示全部楼层
hhh333 发表于 2019-11-30 23:43
跌坑里那么久也不提个醒,我今天搞了半天才发现。

今天刚好在PE中弄那个摄像头,领导要打印前 ...

呵呵,暗门啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-12-25 00:58

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表