我正在寻找一种方法来解析 Windows 10 中的 .local 地址。
Windows 本身也包含 mDNS 支持,但似乎仅适用于现代 API 应用程序。
过去,建议总是安装 Apple 的 Bonjour,例如如何在 Windows 上启用 mDNS(7)。不幸的是,这似乎不再起作用了。
据我所知,问题在于 Windows 自己的一个进程 DNSCache 现在正在监听端口 5353。
如何让 mDNS 适用于非现代应用程序?
答案1
我发布问题几分钟后就找到了答案。
解决方案是首先在 Windows 中禁用 mDNS。这必须在注册表中完成。像往常一样,标准警告适用:编辑注册表并不适合胆小的人,并且操作不当可能会损坏您的 Windows 安装,无法修复。
导航到注册表项 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient。如果该项不存在,则可能需要创建它。
然后将值 EnableMulticast 添加为 REG_DWORD,其值为 0。
重启。
然后安装 Bonjour。经过这一步,mDNS 就可以正常工作了。
更新:在最近的版本中(在 Windows 10 10.0.19042 上测试),Windows 似乎可以立即解析所有应用程序的 mDNS,而无需注册表破解或 Bonjour。我在专业版上测试了它,不知道它是否也适用于家庭版。
答案2
根据Windows 10 和 Windows Server 2016 组策略主页文档你必须关闭链路本地多播名称解析 (LLMNR)使用DNSClient::EnableMulticast
策略设置。
如果按照以下步骤启用 DNSClient::EnableMulticast 策略设置,则可以禁用 LLMNR:
按Win+ R,
regedit
输入打开框,然后单击好的。如果提示用户帐户控制, 点击是的打开注册表编辑器。
找到并单击
DNSClient
注册表路径中的子项:HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\
如果
DNSClient
子项不存在,请通过右键单击Windows NT
子项来创建一个新的注册表项。选择新的进而钥匙
将其命名为
DNSClient
。右键单击
DNSClient
子项。选择新的进而DWORD(32 位)值
将其命名为
EnableMulticast
。双击
EnableMulticast
以编辑值0
重新启动您的电脑。
如果此过程很长,请创建一个批处理文件并以管理员身份运行它:
enable_mdns.bat
使用您最喜欢的文本编辑器创建一个文件。- 复制并粘贴此代码片段:
REG ADD "HKLM\Software\Policies\Microsoft\Windows NT\DNSClient" /V "EnableMulticast" /D "0" /T REG_DWORD /F
- 保存并以管理员身份运行。
- 如果提示用户帐户控制, 点击是的运行该
.bat
文件。 - 重新启动您的电脑。