连接打印机时,Windows 7 使用 application/soap+xml 失败,而 XP 使用 application/ipp 成功

连接打印机时,Windows 7 使用 application/soap+xml 失败,而 XP 使用 application/ipp 成功

我有一个 Comtrend ADSL 调制解调器/路由器,它与 IPP 共享一个 USB 打印机。

Windows XP 可以正确连接,但 Windows 7 则不能(搜索返回的许多令人沮丧的讨论帖证实了这一点)

Wireshark 显示,当要求 Windows 7 连接打印机时,它会发送:

POST /printers/hp HTTP/1.1
Cache-Control: no-cache
Connection: Close
Pragma: no-cache
Content-Type: application/soap+xml
User-Agent: WSDAPI
Content-Length: 520
Host: 192.168.1.1:631

接下来是 XML 探测,并且该特定路由器只是关闭连接作为响应。

但是 Windows XP 会发送:

POST /printers/hp HTTP/1.1
Content-Type: application/ipp
User-Agent: Internet Print Provider
Host: 192.168.1.1:631
Content-Length: 125
Connection: Keep-Alive
Cache-Control: no-cache

然后进行查询(我不熟悉 IPP 的内部结构)

调制解调器响应:

HTTP/1.1 200 OK

然后得到一个满足 XP 的响应。

是否可以让 Windows 7 使用 IPP 而不是 soap+xml ?

我发现有关此问题的所有讨论主题都让人们陷入困境,通过打印机安装向导不断尝试,但问题似乎出在协议语言上。

答案1

只需在这里发布更新,以便其他人可以在谷歌上找到这个问题。

Windows 10 1807 中也存在类似的问题,即 IPP 将不会被使用,并且注册表更改似乎也不起作用。

问题:您想使用 http 创建 IPP 打印机,但定义失败,代码为 1793,尽管已安装 Internet 打印客户端,并且未设置阻止 Internet 打印的 GPO。

确认方式:如果您拉取数据包跟踪,您会发现用户代理不是 Internet 打印客户端,而是 WSDAPI

缓存控制:无缓存

连接:保持连接

指令:无缓存

内容类型:application/soap+xml

用户代理:WSDAPI

内容长度:520

主机:MyIPPHost:631

xml 版本="1.0" 编码="utf-8"?>

urn:模式-xmlsoap-org:ws:2005:04:discovery

http://schemas.xmlsoap.org/ws/2005/04/discovery/Probe

urn:uuid:9332e7fe-3c0c-4d26-849d-e82b6a438840

答案2

为了使 Windows 7 能够使用 IPP,必须先安装它。打开并从窗口左侧appwiz.cpl选择。您感兴趣的功能是-> 。Turn Windows features on or offPrint and Document ServicesInternet Printing Client

如上所述,Windows 7 Starter Edition 不支持 IPP这里

请注意,必须重新启动 Spooler 服务才能使此功能生效,您可以通过以下方式手动重新启动它services.msc(按照文章)或者简单地重新启动计算机。

Control Panel重新启动后,您可以使用-> Devices and Printers-> Add printer-> Add a network, wireless or Bluetooth printer-> The printer I want isn't listed-->添加打印机http://192.168.1.1:631/printers/hp

答案3

也许您已经找到了答案...无论如何,请看这里:

http://blogs.technet.com/b/askperf/archive/2012/03/02/internet-printing-how-windows-decides-if-http-or-rpc-is-used-for-a-print-connection-to-an-ipp-server.aspx

简而言之,答案归结为: HKEY_CURRENT_USER\Printers\Settings创建一个名为的值PreferredConnection并将其设置为 0。

这将(或应该)导致 Windows 始终使用标准 IPP 与您的 CUPS 服务器通信,而不是 M$ RPC IPP。

相关内容