说明:在软件中经常需要设置后台报表、单据、条码价签和前台小票的打印,在实施过程中调试打印几乎是必不可少的环节,本篇主要针对后台设置了共享打印机却无法连接或拒绝访问导致不能打印的情况进行说明。
问题图例:
在后台打印单据,打印机驱动中显示了当前打印的队列,但打印文档的状态为拒绝访问,所有者为当前系统登陆的操作员账号。
操作步骤:
1、网络共享
检查设置共享打印机的主机是否有开启网络共享,在控制面板-网络和共享中心-更改适配器设置,右键点击当前打印机所处的网络属性,勾选Microsoft网络的文件和打印机共享。
2、计算机管理
检查主机是否开启Guest来宾用户。右键计算机-管理,进入计算机管理操作页面。
在打开的计算机管理操作页面中选择系统工具-本地用户和组-用户-双击右框中的Guest选项-取消“账户已禁用”的勾选项,最后应用即可。
2.1、没有本地用户和组
这样的问题
1、使用 PowerShell 进行用户启用和禁用
2、输入`Disable-LocalUser -Name “Local Demo”` 禁用用户;输入 `Enable-LocalUser -Name “Local Demo”`
3、本地策略
按照上条办法中取消了禁用之后若仍然拒绝访问,可能是因为本机安全策略阻止了来宾用户的访问,此时需要去本地策略组编辑器中进行相关设置。在运行栏中输入gpedit.msc进入设置页面,依次点击计算机配置-Windows设置-安全设置-本地策略-用户权限分配-在右边找到“拒绝本地登录”和“拒绝从网络访问这台计算机”双击打开,将这里面的guest账户删除。
3.1、没有本地策略
`win + R` 输入gpedit.msc后运行失败,使用bat脚本运行下载本地策略
@echo off
pushd "%~dp0"
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"C:\Windows\servicing\Packages\%%i"
pause
新建文本后复制上面代码粘贴进去,保存后修改后缀为.bat,使用管理员运行,加载完后再`win + R` 输入gpedit.msc
4、注册表
若以上方法设置之后仍然提示拒绝访问,还可以通过修改注册表尝试解决此问题,首先在运行中输入regedit打开注册表,找到以下路径:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print,然后在右侧的列表中新建一个32位的DWORD值。
名称为RpcAuthnLevelPrivacyEnabled,值为0。
添加之后重启电脑再重新打印测试页核实是否正常。
另外,可以考虑共享打印机的ip是否变更,共享时是否设置路径时用ip设置还是固定计算机名,可以尝试重新配置共享打印机的路径。(此处可以看《打印机如何设置共享》的步骤)
5、更换win32spl.dll
在删除之前先把这个关闭
6、添加凭证
针对于window11与window10之间共享打印机的问题,最新版的win10和win11之间已经修复了dll的bug,目前出现709报错是因为凭据设计bug,window11版本最好是21H2以上
控制面板 -> 用户账户 -> 凭证管理器,添加Window 凭证
添加Windows凭据为 \\[局域网的主机名] 用户为guest 密码置空就行,到这一步能共享成功就行
如果没有成功,可能需要进行上面几点的操作