标题: Win10打过10.14补丁之后网络打印机访问异常 创建: 2021-11-26 15:14 更新: 2022-03-01 16:09 链接: https://scz.617.cn/windows/202111261514.txt Win10打过10.14补丁之后网络打印机访问异常,这事很多吐槽的 https://www.bleepingcomputer.com/news/microsoft/new-windows-10-kb5006670-update-breaks-network-printing/ https://www.bleepingcomputer.com/news/microsoft/how-to-fix-the-windows-0x0000011b-network-printing-error/ https://www.techadvisor.com/how-to/windows/windows-10-fix-network-printer-bug-3809578/ 一堆反馈说,应该是KB5006670导致的,据说卸载即可恢复打印 wusa /uninstall /kb:5006670 据说恢复这个文件到9月版本亦可 C:\Windows\system32\win32spl.dll 也有说恢复这个文件的 C:\Windows\system32\mscms.dll 据说removing and reinstalling printers on servers,可以解决客户端的故障, 而不用卸载客户端补丁。 在客户端试了这两个注册表项,没啥用,难道要在服务端用? -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\CopyFilesPolicy] @="1" [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print] "RpcAuthnLevelPrivacyEnabled"=dword:00000000 -------------------------------------------------------------------------- 上面是10月中的混乱场面回顾。 11月的补丁也没有拨乱反正,我这一个多月来都是拿U盘去打印服务器上本地打印, 完全没法网络打印。 昨天云海给出一个只对中阶或以上水平技术人员有效的热Patch方案,测试有效,帮 他记录一下。 Guest环境如下 -------------------------------------------------------------------------- Win10 Win10企业版2016 LTSB 1607(OS Build 14393.4704) spoolsv.exe 10.0.14393.4704 (rs1_release.211004-1917) win32spl.dll 10.0.14393.4704 (rs1_release.211004-1917) -------------------------------------------------------------------------- 找出Win10客户端打印服务进程PID $ tasklist /svc /fi "services eq Spooler" Image Name PID Services ========================= ======== ============================================ spoolsv.exe 1820 Spooler spoolsv(1820)会加载win32spl.dll。网络打印时,客户端这边会过 win32spl!STRING_HANDLE_bind 10.14补丁在该函数中新增调用如下函数 win32spl!_imp_RpcBindingSetAuthInfoExW RPCRT4!RpcBindingSetAuthInfoExW 云海指出,热Patch跳过对上述函数的调用,即可恢复客户端的网络打印能力,无需 重启客户端OS或打印服务,无需重启服务端OS或打印服务,无需卸载KB5006670,立 即生效。下面是热Patch方案中的一种 cdb调试spoolsv(1820) > u win32spl!STRING_HANDLE_bind+0x169 win32spl!STRING_HANDLE_bind+0x16f 00007fff`73bbbb19 ff1569720800 call qword ptr [win32spl!_imp_RpcBindingSetAuthInfoExW (00007fff`73c42d88)] 00007fff`73bbbb1f 8bd8 mov ebx,eax $ rasm2 -a x86 -b 64 -s intel -o 0x7fff73bbbb19 "xor eax,eax;jmp 0x7fff73bbbb1f" 31c0eb02 $ rasm2 -a x86 -b 64 -s intel -o 0x7fff73bbbb19 -D 31c0eb02 0x7fff73bbbb19 2 31c0 xor eax, eax 0x7fff73bbbb1b 2 eb02 jmp 0x7fff73bbbb1f Patch eb win32spl!STRING_HANDLE_bind+0x169 31 c0 eb 02 > db win32spl!STRING_HANDLE_bind+0x169 win32spl!STRING_HANDLE_bind+0x169+5+2 00007fff`73bbbb19 31 c0 eb 02 08 00 8b d8 1....... > u win32spl!STRING_HANDLE_bind+0x169 win32spl!STRING_HANDLE_bind+0x16f 00007fff`73bbbb19 31c0 xor eax,eax 00007fff`73bbbb1b eb02 jmp win32spl!STRING_HANDLE_bind+0x16f (00007fff`73bbbb1f) 00007fff`73bbbb1d 0800 or byte ptr [rax],al 00007fff`73bbbb1f 8bd8 mov ebx,eax UnPatch eb win32spl!STRING_HANDLE_bind+0x169 ff 15 69 72 也可以用断点热Patch ba e1 win32spl!STRING_HANDLE_bind+0x169 "r eax=0;r rip=win32spl!STRING_HANDLE_bind+0x16f;gc" 热Patch后网络打印恢复正常,cdb中看到依次加载 C:\Windows\System32\ntprint.dll C:\Windows\System32\mscms.dll C:\Windows\system32\spool\DRIVERS\x64\3\HP1100SD.DLL Wireshark抓包看相关报文加强理解热Patch的效果,但那些MS/DCE RPC协议解码更专 业,不在此多言。 云海这个热Patch方案出现得太晚,我都U盘打印好几轮了。他说12月的微软补丁将拨 乱反正,恢复Win10客户端网络打印能力,拭目以待。 2021-11-28 13:55 ID为"江南阿菜"的网友声称,用dism安装KB5007253可以解决问题,我未实测。 http://support.microsoft.com/kb/5007253/en-us http://support.microsoft.com/kb/5007253/zh-cn https://support.microsoft.com/en-us/topic/november-22-2021-kb5007253-os-builds-19041-1387-19042-1387-19043-1387-and-19044-1387-preview-d1847be9-46c1-49fc-bf56-1d469fc1b3af https://www.catalog.update.microsoft.com/Search.aspx?q=KB5007253 可用如下命令检查本机是否安装过KB5007253 wmic qfe get hotfixid | findstr KB5007253 powershell get-hotfix -id KB5007253 此刻Win10企业版2016 LTSB 1607的自动更新里没有这个补丁,安心等12月的微软补 丁。 2021-12 zyh 安装2021.12补丁即可解决问题,出于测试目的,可以临时撤销2021.12补丁效果 -------------------------------------------------------------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC] "RpcNamedPipeAuthentication"=dword:00000001 -------------------------------------------------------------------------- reg.exe query "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v "RpcNamedPipeAuthentication" reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v "RpcNamedPipeAuthentication" /t REG_DWORD /d 1 /f reg.exe delete "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\RPC" /v "RpcNamedPipeAuthentication" /f RpcNamedPipeAuthentication为1时,撤销2021.12补丁效果,之后网络打印机访问异 常。