How to enable mDNS on Windows 10 build 17134?
I am looking for a way to resolve .local addresses in Windows 10.
Windows itself also includes mDNS support, but that appears to only be available for Modern API applications.
In the past, the advice has always been to install Apple's Bonjour, for instance How to enable mDNS on Windows (7). Unfortunately, that seems to no longer be working.
As far as I can tell, the problem is that one of Windows' own processes, DNSCache, is now listening on port 5353.
How do I get mDNS to work for non-Modern applications?
I ended up finding the answer minutes after posting my question.
The solution is to first disable mDNS in Windows. This has to be done in the registry. As usual, the standard warning applies: editing the registry is not for the faint of heart, and doing it incorrectly can damage your Windows installation beyond repair.
Navigate to the registry key Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient. If the key does not exist, you may need to create it.
Then add the value EnableMulticast as a REG_DWORD, with the value 0.
Reboot.
Then install Bonjour. After this hack, mDNS works as expected.
Update: In recent versions (tested on Windows 10 10.0.19042), it appears that Windows resolves mDNS for all applications out of the box, without needing a registry hack or Bonjour at all. I tested it on the Pro version, and do not know if it applies to the Home version as well.
According to the Group Policy Home for Windows 10 and Windows Server 2016 documentation you have to Turn off the Link Local Multicast Name Resolution (LLMNR) using the DNSClient::EnableMulticast
policy setting.
You can disable the LLMNR if you enable the DNSClient::EnableMulticast policy setting by following these steps:
- Press Win + R, type
regedit
in the Open box, and then click OK. - If prompted by User Account Control, click Yes to open the Registry Editor.
-
Locate and then click the
DNSClient
subkey in the registry path:HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\
- If the
DNSClient
subkey does not exits create a new Registry Key by Right-click onWindows NT
subkey. - Select New and then Key
- Name it as
DNSClient
.
- If the
Right-click on
DNSClient
subkey.- Select New and then DWORD (32-bit) Value
- Name it as
EnableMulticast
. - Double-click on
EnableMulticast
to edit the value with0
- Reboot your PC.
If this process is to long create a batch file and run it as administrator:
- Create an
enable_mdns.bat
file using your favorite text editor. - Copy and paste this snippet:
REG ADD "HKLM\Software\Policies\Microsoft\Windows NT\DNSClient" /V "EnableMulticast" /D "0" /T REG_DWORD /F
- Save it and Run it as administrator.
- If prompted by User Account Control, click Yes to run the
.bat
file. - Reboot your PC.