我正在寻找一种方法来禁用 Server 2012 和 Server 2012 R2 上的 WSD。基本上,我们许多打印服务器上的许多打印机都认为使用这项该死的服务比使用分配给它们的 TCP/IP 端口更好,并且它们正在将自己切换到 WSD 端口,这导致用户无法打印到这些打印机。
在 Windows 2008 R2 服务器上,我可以通过停止和禁用 PnP-X IP 总线枚举器服务来防止此行为但是,该服务似乎没有出现在 Server 2012 中。
我所遇到的关于阻止这种行为的唯一建议都是不理想的。
- 关闭网络发现(WDS 依赖其运行)
- 在防火墙处阻止 WDS
- 禁用打印机上的 WDS 功能。
我想找到一种方法来禁用打印服务器上的这项服务(并且只禁用这项服务),因为任何其他选项都需要比我想要的更多的工作(2、3)或产生不良的副作用(1)。有人知道怎么做吗?
答案1
恐怕没有专门用于 Windows Server 中打印机发现的 WSD“关闭”开关
作为禁用“功能发现提供程序主机”服务的替代方法,您可以在高级安全 Windows 防火墙中将以下出站规则的操作更改为拒绝:
这将专门阻止 WSD 和 WSDAPI 发现事件
如果您的打印服务器与打印机网络隔离,请阻止这些特定端口反而:
- TCP 5357-WSDAPI事件
- TCP 5358 - WSDEvents 安全
- UPD 3702 – WSD 出版
我认为您不需要在打印服务器上禁用 WSD 入站。
答案2
1)合并此reg文件:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WSDPrintDevice]
"Type"=dword:00000001
"Start"=dword:00000004
"ErrorControl"=dword:00000001
"Tag"=dword:00000028
"ImagePath"=hex(2):00,00
"DisplayName"="@WSDPrint.Inf,%WSDPrintDevice.SVCDESC%;WSD Print Support"
"Group"="Extended Base"
"Owners"=hex(7):00,00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WSDPrintDevice\Enum]
"Count"=dword:00000000
"NextInstance"=dword:00000000
这将禁用 WSD 打印服务启动,并且如果某些程序想强制启动它,则会删除 WSDPrint.Inf 的位置。
2)将 WINDOWS\INF 文件夹中这 3 个文件的扩展名重命名为 .bak:
WSDPrint.Inf
WSDPrint.PNF
WSDScDrv.inf
这会阻止 WSD 打印设备启动。
虽然 WSD 打印机显示在“添加打印机”窗口中,并且似乎可以添加它们,但 WSD 端口从未创建,并且打印机的 WSD 驱动程序未安装。满足所有条件。已在 Windows Server 2012 R2 中验证。
1 缺点:在进行与打印或 WSD 相关的任何 Windows 更新之前,您应该将这 3 个文件重命名为原始名称。然后在成功安装补丁后将它们改回 .bak。
答案3
您需要的服务是“功能发现提供程序主机”(也称为fdPHost
)。这将禁用 WS-Discovery 协议。但是,这还会产生禁用 SSDP 支持的副作用。
答案4
这是一个注册表文件和一个批处理文件,使这只需两次点击即可完成:
https://drive.google.com/open?id=1mlx_ziiygRib9f4UkweBvAV8n-DXYNKg
disablewsdservice.reg 是注册表黑客提供的罗尔德:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WSDPrintDevice]
"Type"=dword:00000001
"Start"=dword:00000004
"ErrorControl"=dword:00000001
"Tag"=dword:00000028
"ImagePath"=hex(2):00,00
"DisplayName"="@WSDPrint.Inf,%WSDPrintDevice.SVCDESC%;WSD Print Support"
"Group"="Extended Base"
"Owners"=hex(7):00,00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WSDPrintDevice\Enum]
"Count"=dword:00000000
"NextInstance"=dword:00000000
disablewsdservice.EN.bat 是一个批处理文件,用于在重命名文件之前获取需要重命名的文件的所有权。它最后还会运行注册表 hack。
TAKEOWN /F %WINDIR%\INF\WSDPrint.Inf
ICACLS %WINDIR%\INF\WSDPrint.Inf /grant administrators:F
ren %WINDIR%\INF\WSDPrint.Inf WSDPrint.Inf.bak
TAKEOWN /F %WINDIR%\INF\WSDPrint.PNF
ICACLS %WINDIR%\INF\WSDPrint.PNF /grant administrators:F
ren %WINDIR%\INF\WSDPrint.PNF WSDPrint.PNF.bak
TAKEOWN /F %WINDIR%\INF\WSDScDrv.inf
ICACLS %WINDIR%\INF\WSDScDrv.inf /grant administrators:F
ren %WINDIR%\INF\WSDScDrv.inf WSDScDrv.inf.bak
disablewsdservice.reg
您需要在提升的(管理员)命令提示符下运行批处理文件。对于任何英语版本的 Windows,请使用 EN 文件;对于任何法语版本,请使用 FR 文件。
您可以先运行批处理,然后运行 reg,反之亦然。
在 W10 LTSC 上测试成功。