升级Windows10 20h2后调用AddWindowsPrinterConnection报错0x8007011B
解决Windows10 20H2下添加网络打印机报错0x8007011B的思路
问题背景
升级到Windows10 20H2后,原有使用WScript.Network添加网络打印机的代码报错:System.Runtime.InteropServices.COMException 'Exception from HRESULT: 0x8007011B',且无法回退系统。相关代码:
...more codes here strSelectedPrinterPath = "\\server\myprinter" Dim objNetwork = CreateObject("WScript.Network") objNetwork.AddWindowsPrinterConnection(strSelectedPrinterPath) objNetwork.SetDefaultPrinter(strSelectedPrinterPath)
解决思路
检查并重启打印机后台处理服务
打开services.msc,找到Print Spooler服务:- 确认服务处于运行状态,若未运行则启动它
- 将启动类型设置为“自动”
- 尝试重启服务,清除临时缓存问题
提升应用运行权限
Win10 20H2的安全补丁收紧了权限控制,尝试以管理员身份运行你的应用,再执行打印机连接操作。调整组策略中的打印机限制
打开gpedit.msc,定位到计算机配置>管理模板>打印机:- 检查是否有启用“拒绝添加打印机”“限制打印机连接”类的策略,将其设置为“未配置”或“禁用”
替换旧版COM API为.NET原生API
WScript.Network是老旧的COM对象,兼容性在新系统中下降,改用System.Printing命名空间实现:
VB.NET示例代码:Imports System.Printing Dim printerServerPath As String = "\\server" Dim printerName As String = "myprinter" ' 连接网络打印机 Dim printServer As New PrintServer(printerServerPath) Dim targetPrinter As PrintQueue = printServer.GetPrintQueue(printerName) ' 设置为默认打印机 targetPrinter.SetAsDefaultPrinter()清理打印机缓存
- 停止Print Spooler服务
- 删除
C:\Windows\System32\spool\PRINTERS目录下的所有文件 - 打开注册表编辑器(
regedit),删除HKEY_CURRENT_USER\Printers\Connections下对应打印机的项 - 重启Print Spooler服务和电脑后重试
检查服务器端打印机共享权限
登录打印机所在服务器:- 确认打印机共享权限中包含当前客户端用户的“读取”和“打印”权限
- 检查服务器端Print Spooler服务是否正常运行
- 确保服务器已安装对应版本的安全补丁,避免版本不兼容导致的连接问题
内容的提问来源于stack exchange,提问作者MissMuffet
相关产品推荐
相关产品推荐

