完美解决解决KB5006738、KB5006670等补丁引起的打印机共享问题
发现补丁引起的0x00000709等错误只需要替换一个文件即可,但需要修改一项注册表项,如下
1、替换C:\Windows\System32\中的win32spl.dll为旧版本
2、在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print中增加REG_DWORD项 RpcAuthnLevelPrivacyEnabled = 0
新建txt文本,复制以下文字,粘贴到文本文件另存为fix.bat
@Echo off
Color A
Title Fix Print spooler
rem replacewin32spl.dll
rem Restart print service
Echo --------------------------------------------------------------------------
Echo Stop printing service
net stop spooler
Echo --------------------------------------------------------------------------
Echo replace win32spl.dll
rem win32spl.dll
Echo --------------------------------------------------------------------------
timeout /t 3 /nobreak
Takeown /A /F C:\Windows\System32\win32spl.dll
icacls "C:\Windows\System32\win32spl.dll" /grant "administrators":F
icacls "C:\Windows\System32\win32spl.dll" /grant SYSTEM:F
ren C:\Windows\System32\win32spl.dll win32spl.dll.old
copy "%~dp0\win32spl.dll" C:\Windows\System32\win32spl.dll /Y
DEL %SystemRoot%\SYSTEM32\SPOOL\PRINTERS\*.* /F /Q
Echo --------------------------------------------------------------------------
Echo Add registry RpcAuthnLevelPrivacyEnabled = 0
Echo --------------------------------------------------------------------------
rem add regkey
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print" /v RpcAuthnLevelPrivacyEnabled /t REG_DWORD /d 0 /f
Echo --------------------------------------------------------------------------
Echo Start print service
net start spooler
Echo --------------------------------------------------------------------------
Echo Complete the operation, please print the test!
pause
将旧版win32spl.dll文件跟Fix.bat放到同一目录中,如下图,右键点击,选择以管理员身份运行
win32spl.dll文件请自行根据系统版本查找,不同版本会有差别,版本不匹配依旧会不能打印,可以先卸载补丁备份文件后再安装补丁,安装完补丁再执行以上操作,不影响后续补丁的更新,微软暂时没有对此问题进行更新,此方案依旧可用,后续更新依旧可能会对此造成影响