You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级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服务:

    1. 确认服务处于运行状态,若未运行则启动它
    2. 将启动类型设置为“自动”
    3. 尝试重启服务,清除临时缓存问题
  • 提升应用运行权限
    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()
    
  • 清理打印机缓存

    1. 停止Print Spooler服务
    2. 删除C:\Windows\System32\spool\PRINTERS目录下的所有文件
    3. 打开注册表编辑器(regedit),删除HKEY_CURRENT_USER\Printers\Connections下对应打印机的项
    4. 重启Print Spooler服务和电脑后重试
  • 检查服务器端打印机共享权限
    登录打印机所在服务器:

    1. 确认打印机共享权限中包含当前客户端用户的“读取”和“打印”权限
    2. 检查服务器端Print Spooler服务是否正常运行
    3. 确保服务器已安装对应版本的安全补丁,避免版本不兼容导致的连接问题

内容的提问来源于stack exchange,提问作者MissMuffet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 12:03:22