无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 11367|回复: 49
打印 上一主题 下一主题

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

    [复制链接]
跳转到指定楼层
1#
发表于 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 很给力!

查看全部评分

2#
发表于 2019-6-9 19:24:26 来自手机 | 只看该作者
支持H大
回复

使用道具 举报

3#
发表于 2019-6-9 19:52:20 | 只看该作者
受用受用,感谢感谢
回复

使用道具 举报

4#
发表于 2019-6-9 20:32:43 来自手机 | 只看该作者
打印组件扔的太久了,断档了。多谢分享
回复

使用道具 举报

5#
发表于 2019-6-10 08:26:25 | 只看该作者
很详细,多谢h大的分享
回复

使用道具 举报

6#
发表于 2019-6-10 09:52:18 | 只看该作者
没有打印设备啊
回复

使用道具 举报

7#
发表于 2019-6-10 10:26:48 | 只看该作者
打印机系统中已经集成
回复

使用道具 举报

8#
发表于 2019-6-10 17:00:12 | 只看该作者
佩服!这得花上多少时间啊,这么就放给大家了。感谢大公无私的hhh333
回复

使用道具 举报

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

使用道具 举报

10#
发表于 2019-6-11 14:49:38 | 只看该作者
WimBuilder2\Projects\WIN10XPE\01-Components\Printer\main.bat
  1. rem ==========update filesystem==========

  2. set AddFiles_Mode=merge
  3. ;devices and printers
  4. call AddDrivers "c_pnpprinters.inf,c_printer.inf,PrintQueue.inf,printupg.inf,usbprint.inf"

  5. ;base drivers
  6. call AddDrivers "ntprint4.inf,ntprint.inf,ntprint4.inf,tsprint.inf,wsdprint.inf"

  7. call AddFiles %0 :end_files
  8. goto :end_files

  9. \Windows\splwow64.exe
  10. \Windows\PrintDialog

  11. \Windows\System32\drivers\usbprint.sys
  12. @\Windows\System32\driverstore\en-US
  13. ;devices and printers
  14. c_dot4print.inf_loc
  15. c_pnpprinters.inf_loc
  16. c_printer.inf_loc
  17. c_receiptprinter.inf_loc

  18. ;base drivers
  19. ntprint4.inf_loc

  20. @\Windows\System32\driverstore\%WB_PE_LANG%
  21. ;devices and printers
  22. bthprint.inf_loc
  23. PrintQueue.inf_loc
  24. usbprint.inf_loc

  25. ;base drivers
  26. ntprint.inf_loc
  27. tsprint.inf_loc
  28. WSDPrint.inf_loc

  29. @\Windows\System32\catroot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}\
  30. *Print*
  31. ntprint.cat
  32. ntprint4.cat
  33. prn*.cat
  34. @\Windows\System32\DriverStore\FileRepository\prn*.inf*

  35. @\Windows\System32\
  36. AppMon.dll,bidispl.dll,compstui.dll,DafPrintProvider.dll,defaultdevicemanager.dll,defaultprinterprovider.dll
  37. DevDispItemProvider.dll,DeveloperOptionsSettingsHandlers.dll,deviceassociation.dll
  38. DeviceCenter.dll,DeviceDisplayStatusManager.dll,DeviceDriverRetrievalClient.dll
  39. DeviceEject.exe,DeviceElementSource.dll,DeviceEnroller.exe,DeviceMetadataRetrievalClient.dll
  40. DevicePairing.dll,DevicePairingFolder.dll,DevicePairingProxy.dll,DevicePairingWizard.exe
  41. deviceregistration.dll,DeviceSetupManager.dll,DeviceSetupManagerAPI.dll,DeviceSetupStatusProvider.dll
  42. DevicesFlowBroker.dll,DeviceUxRes.dll,devinv.dll,DevPropMgr.dll,DevQueryBroker.dll,efswrt.dll
  43. FaxPrinterInstaller.dll,FdDevQuery.dll,fdPnp.dll,fdprint.dll,fdWNet.dll,fdWSD.dll,findnetprinters.dll
  44. fundisc.dll,fxsapi.dll,FXSMON.dll,FXSRESM.dll,gpprnext.dll,hgprint.dll,icm32.dll,icmui.dll
  45. inetpp.dll,inetppui.dll,IPPMon.dll,localspl.dll,localui.dll,mgmtapi.dll
  46. newdev.exe,ntprint.dll,ntprint.exe,OpcServices.dll,pcl.sep,print.exe
  47. PrintBrmUi.exe,PrintDialogHost.exe,PrintDialogs.dll,printfilterpipelineprxy.dll,printfilterpipelinesvc.exe
  48. PrintIsolationHost.exe,PrintIsolationProxy.dll,printmanagement.msc,PrintPlatformConfig.dll,PrintRenderAPIHost.DLL
  49. printui.dll,printui.exe,PrintWSDAHost.dll,prncache.dll,prnfldr.dll,prnntfy.dll,prntvpt.dll,pscript.sep
  50. puiapi.dll,puiobj.dll,rasadhlp.dll,RepCurUser.cmd,ReSpooler.cmd,serialui.dll,spoolss.dll,spoolsv.exe,srclient.dll
  51. srcore.dll,sysprint.sep,sysprtj.sep,tcpmon.ini,umb.dll,usbmon.dll,webservices.dll,win32spl.dll
  52. Windows.Devices.Printers.dll,Windows.Devices.Printers.Extensions.dll
  53. Windows.Graphics.dll,Windows.Graphics.Printing.3D.dll,Windows.Graphics.Printing.dll
  54. Windows.Internal.Shell.Broker.dll,WLIDNSP.DLL,WlS0WndH.dll,WSDApi.dll,WSDMon.dll,wsdprintproxy.dll,WSDScanProxy.dll
  55. XpsDocumentTargetPrint.dll,XpsFilt.dll,XpsGdiConverter.dll,XpsPrint.dll,XpsRasterService.dll,XPSServiceS.DLL,XPSSHHDR.dll
  56. xwizard.exe,xwizards.dll,xwtpdui.dll,xwtpw32.dll
  57. :end_files

  58. call DoAddFiles

  59. rem ==========update registry==========

  60. call RegCopy SYSTEM\ControlSet001\Control\Print
  61. call RegCopy SYSTEM\ControlSet001\Control\Class\{1ed2bbf9-11f0-4084-b21f-ad83a8e6dcdc}
  62. call RegCopy SYSTEM\ControlSet001\Control\Class\{4658ee7e-f050-11d1-b6bd-00c04fa372a7}
  63. call RegCopy SYSTEM\ControlSet001\Control\Class\{49ce6ac8-6f86-11d2-b1e5-0080c72e74a2}
  64. call RegCopy SYSTEM\ControlSet001\Control\Class\{4d36e979-e325-11ce-bfc1-08002be10318}
  65. call RegCopy SYSTEM\ControlSet001\Control\Class\{c30ecea0-11ef-4ef9-b02e-6af81e6e65c0}
  66. call RegCopy SYSTEM\ControlSet001\Control\Class\{c7bc9b22-21f0-4f0d-9bb6-66c229b8cd33}

  67. rem add services
  68. call RegCopyEx Services Spooler

  69. rem remove usbprint if this is additional component
  70. call RegCopyEx Services usbprint

  71. rem update spoolsv.exe binary
  72. binmay.exe -u "%X_SYS%\spoolsv.exe" -s u:SystemSetupInProgress -r u:DisableSpoolsvInWinPE
  73. fc /b "%X_SYS%\spoolsv.exe.org" "%X_SYS%\spoolsv.exe"
  74. del /f /q "%X_SYS%\spoolsv.exe.org"

  75. rem EnablePrintFeature
  76. md "%X%\PEMaterial"
  77. if 1==1 (
  78.   echo ntprint.exe
  79.   echo net start spooler
  80.   echo PnPutil.exe -i -a "%%Windir%%\inf\usbprint.inf"
  81. )>"%X%\PEMaterial\EnablePrintFeature.bat"
  82. rem call link "%X%\PEMaterial\EnablePrintFeature.bat" "%X_Desktop%\EnablePrintFeature.lnk"
复制代码


按你的列表和注册表信息,转了WimBuilder2的批处理,进PE是提示打印服务启动成功,
驱动安装成功。不过没有打印设备无法判断。

XPS的DLL看到有添加,但是好像打印上没有虚拟打印机选项。。。

点评

终于发现了,一个看花眼导致1903打印组件一个月都安装不上,现在可以了。  详情 回复 发表于 2019-7-7 16:26
回复

使用道具 举报

11#
 楼主| 发表于 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
回复

使用道具 举报

12#
 楼主| 发表于 2019-7-7 16:49:21 | 只看该作者
hhh333 发表于 2019-7-7 16:26
终于发现了,一个看花眼导致1903打印组件一个月都安装不上,现在可以了。

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

使用道具 举报

13#
 楼主| 发表于 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
回复

使用道具 举报

14#
发表于 2019-7-7 20:23:06 | 只看该作者
不会又是WINSXS文件解压问题
回复

使用道具 举报

15#
发表于 2019-7-13 22:45:49 | 只看该作者
hhh333 发表于 2019-7-7 20:16
1、注册表没变为1903的
2、基本驱动没变也为1903的
3、设备与打印弄错了用了1709的

你这个到啥版本(16299?)为止可以创建出2个虚拟打印机?
v1903太新了不说,RS5可以么。

我照800MB的全功能PE,补了个别文件,PDF和XPS打印机还是没有,
但是手动添加打印机可以点了。。。不过我没真实打印机测试是否可用。。。
选PDF或XPS驱动文件,提示找不到文件。catalog也全加了都不行。。。



闲了再研究研究,回头还是先用RS5测试。。。(RS5是肯定可以添加出来的)

点评

应该是从spoolsv.exe不需要破解开始,看了一下,是1809开始,1803都是可以的  详情 回复 发表于 2019-7-14 17:55
我把文件列表部分打包成print.7z,其他部分如基本驱动和注册表用1903的,安装usbprint.inf,那两个驱动就自动在打印队列中出现了。RS5没研究,应该与1709一样。1903有一定变化。  详情 回复 发表于 2019-7-14 07:30
回复

使用道具 举报

16#
 楼主| 发表于 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有一定变化。
回复

使用道具 举报

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

回复

使用道具 举报

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

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

使用道具 举报

19#
发表于 2019-9-26 10:40:33 | 只看该作者
h大18956的打印能解么?
回复

使用道具 举报

20#
发表于 2019-10-5 21:59:32 | 只看该作者
H大,我尝试在WAIGO的18956用上了16299的组件,能成功运行打印机队列和usbprint,打印机死活都装不上,还有什么高招没?
回复

使用道具 举报

21#
发表于 2019-10-6 21:50:42 | 只看该作者
H大你好,我今天特意下载了WAIGO的18990的来试试,打印机能装上,能看到打印机对列,也看到打印机项,就是打印不了,有解么?
回复

使用道具 举报

22#
发表于 2019-10-6 22:48:41 | 只看该作者
我用的你的全家桶pe,打印机能认到,但是一直感叹号,不可用,不知道是哪里出问题了,hp1005的,还有一个爱普生620f的,都不能用。
回复

使用道具 举报

23#
发表于 2019-11-6 11:44:43 | 只看该作者
v1903开始,打印机组件无法在PE下运行。
再次感谢Noel,70多岁了,抽空教我调试spoolsv.exe,不过最后还是靠他找到了原因。

After much research with Windbg and IDA V7 (free), I found that localspl.spl was testing an event every 30 seconds.
But this event did not change and the dll did not come out of its loop.

localspl.dll!IsSystemCurrentlyUpgrading calls : spoolss.dll!SplIsUpgrade
spoolss.dll!SplIsUpgrade calls                : spoolsv.exe!PrvSplIsUpgrade
spoolsv.exe!PrvSplIsUpgrade calls in a loop:
                                  lea     rcx, WNF_DEP_OOBE_COMPLETE
                                  call    cs:__imp_NtQueryWnfStateData

After much more research, I found some information in the following sites:
https://blog.quarkslab.com/playi ... n-facility-wnf.html
https://gracefulbits.com/2018/08 ... kernel-mode-driver/
http://redplait.blogspot.com/2012/09/wnf-notifiers.html
http://redplait.blogspot.com/2017/08/wnf-ids-from-perfntcdll.html
"A3BC0C75 - 41960B29 WNF_DEP_OOBE_COMPLETE
This event triggers when the system has completed OOBE (Windows Welcome)"

The question: what is the indicator of "the system has completed OOBE (Windows Welcome)"?

It is understood that there are two tracks to follow, modify the dll or look for the indicator WNF_DEP_OOBE_COMPLETE

1 - First method: change localspl.dll!IsSystemCurrentlyUpgrading
    Very easy with IDA V7 (extraordinary free tool)
C:\Windows\System32>fc /B "C:\Users\noelb\Desktop\ida-asm\1-v1903\localspl - New.dll" C:\Users\noelb\Desktop\ida-asm\1-v1903\localspl.dll
Comparaison des fichiers C:\USERS\NOELB\DESKTOP\IDA-ASM\1-V1903\localspl - New.dll et C:\USERS\NOELB\DESKTOP\IDA-ASM\1-V1903\LOCALSPL.DLL
0001417E: 31 85
00014180: 90 0F
00014181: 90 95
00014182: 90 C0


我们也一起得出了各个版本的补丁,但是我们仍然希望不修改系统的方式,让PE和系统一样。
恰好今天,通过学习WNF的机制,我们得出了让打印机可以工作的关键KEY。

Z:\WimBuilder2\Projects\WIN10XPE\01-Components\Devices and Printers\last.bat添加
  1. reg add "HKEY_LOCAL_MACHINE\tmp_SOFTWARE\Microsoft\Windows NT\CurrentVersion\Notifications\Data" /v 41960B29A3BC0C75 /t REG_BINARY /d 0100000001000000 /f
复制代码


第一次打印时,需要SystemSetupInProgress为0,就可以打印了。

点评

[attachimg]404544[/attachimg] [attachimg]404545[/attachimg] 只改这一个注册表,用记事本打印,显示参数错误  详情 回复 发表于 2019-11-6 17:30
reg add "HKEY_LOCAL_MACHINE\tmp_SOFTWARE\Microsoft\Windows NT\CurrentVersion\Notifications\Data" /v 41960B29A3BC0C75 /t REG_BINARY /d 0100000001000000 /f 一条注册表就行了?其他都不需要破解了么?  详情 回复 发表于 2019-11-6 12:47
回复

使用道具 举报

24#
发表于 2019-11-6 12:47:16 | 只看该作者
本帖最后由 红毛樱木 于 2019-11-6 12:49 编辑
slore 发表于 2019-11-6 11:44
v1903开始,打印机组件无法在PE下运行。
再次感谢Noel,70多岁了,抽空教我调试spoolsv.exe,不过最后还是 ...


reg add "HKEY_LOCAL_MACHINE\tmp_SOFTWARE\Microsoft\Windows NT\CurrentVersion\Notifications\Data" /v 41960B29A3BC0C75 /t REG_BINARY /d 0100000001000000 /f

一条注册表就行了?其他都不需要破解了么?(只是从1903开始才需要这条注册表么?)
回复

使用道具 举报

25#
发表于 2019-11-6 17:30:05 | 只看该作者
slore 发表于 2019-11-6 11:44
v1903开始,打印机组件无法在PE下运行。
再次感谢Noel,70多岁了,抽空教我调试spoolsv.exe,不过最后还是 ...






1903(1909)只改这一个注册表,用记事本打印,显示参数错误

点评

什么时候把Win10builder也更新一下?  详情 回复 发表于 2019-11-7 18:59
WimBuilder2添加这一行,构建。  发表于 2019-11-6 18:14
回复

使用道具 举报

26#
 楼主| 发表于 2019-11-7 18:46:08 | 只看该作者
本帖最后由 hhh333 于 2019-11-7 19:01 编辑

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

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

使用道具 举报

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

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

点评

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

使用道具 举报

28#
发表于 2019-11-7 19:33:56 来自手机 | 只看该作者
hhh333 发表于 2019-11-7 18:59
什么时候把Win10builder也更新一下?

正在搞,动的比较多,winbuilder有些东西受限,在用pecmd写一些函数功能

点评

加那个键值后,word excel打印都没有问题,但记事本打印出现参数错误,不知什么原因。  详情 回复 发表于 2019-11-9 10:49
回复

使用道具 举报

29#
 楼主| 发表于 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
回复

使用道具 举报

30#
发表于 2019-11-9 11:37:42 来自手机 | 只看该作者
hhh333 发表于 2019-11-9 10:49
加那个键值后,word excel打印都没有问题,但记事本打印出现参数错误,不知什么原因。

我用的WPS 2010不能打印,有空再研究
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-20 17:23

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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