IPv6 can cause some problems for applications that are not configured to use IPv6. By default IPv6 is enabled with Windows, disabling it can be tricky because even after you deselect Internet Protocol Version 6 (TCP/IPv6)” in the connection properties of your device it still doesn’t disable all IPv6 components. You can verify this by running ipconfig /all. Therefore to truly disable IPv6 you have to modify the following keys in the registry.
First I would suggest running this PowerShell command to un-check the IPv6 setting on all your network adapters, if you’d like to select just one particular you can use the “Get-NetAdapterBinding” command to get the “-Name” value for the adapter you wish to set.
It’s important to note that this command will un-check all “Internet Protocol Version 6 (TCP/IPv6)” settings from all adapters.
PS: Set-NetAdapterBinding -Name “*” -DisplayName “Internet Protocol Version 6 (TCP/IPv6)” -ComponentID “ms_tcpip6” -Enabled $false
After you’ve completed this command I would recommend running “Get-NetAdapterBinding” and see if “ms_tcpip6” is set to “False”. If so continue on to truly disable IPv6.
Now in the Registry Editor (regedit.exe), locate and then click the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\
DisabledComponents
REG_DWORD: 0xff
Other value options you might want to consider are:
0 to re-enable all IPv6 components (Windows default setting).
0xff to disable all IPv6 components except the IPv6 loopback interface. This value also configures Windows to prefer using IPv4 over IPv6 by changing entries in the prefix policy table. For more information, see Source and destination address selection.
0x20 to prefer IPv4 over IPv6 by changing entries in the prefix policy table.
0x10 to disable IPv6 on all non-tunnel interfaces (both LAN and Point-to-Point Protocol [PPP] interfaces).
0x01 to disable IPv6 on all tunnel interfaces. These include Intra-Site Automatic Tunnel Addressing Protocol (ISATAP), 6to4, and Teredo.
0x11 to disable all IPv6 interfaces except for the IPv6 loopback interface.
If you are trying to disable IPv6 completely I would recommend “0xff” because this value also configures windows to prefer IPv4 over IPv6.
You can apply this setting via Group Policy or via command line:
To Add/Update:
PS: New-Item -Type DWord -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents -Value “0xff” -Force
CMD: REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 0xff /f
To Verify:
PS: Test-Path -Path HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\DisabledComponents
CMD: REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents
After you’ve applied this key you must reboot the system for it to completely take effect.
Ref: https://support2.microsoft.com/kb/929852
3 Replies to “Truly Disable IPv6”
This does work great EXCEPT that it does NOT uncheck the IPv6 box in the Local Area Connections which makes you think IPv6 is Enabled. If you do further troubleshooting (doing an IPCONFIG /ALL), you can confirm that IPv6 truly is disabled. Is there a way to do both so that additional steps are not needed?
Hi Kelly, yes unfortunately this does not uncheck this option. However does disable IPv6. I’ll look into a method that can easily uncheck this for you as well.
-Harry Caskey
I started looking at the Set-NetAdapterBinding cmdlet and came up with a solution that I believe could help you. I will amend this original post to include this.
PS: Set-NetAdapterBinding -Name “*” -DisplayName “Internet Protocol Version 6 (TCP/IPv6)” -ComponentID “ms_tcpip6” -Enabled $false
Keep in mind this will uncheck all IPv6 components. If you wanted to be picky you can also specify the name of the network adapter. To get a list of your systems network adapters you can run this cmdlet “Get-NetAdapterBinding”.