![]() |
Windows 10 Manual TCP/IP Registry TweaksBypassing Windows restrictions by manually editing TCP settings in the Windows Registry2021-04-11 (updated: 2021-04-27) by Philip ![]() Using the Advanced Registry tweaks below allows users to bypass some of the PowerShell/netsh restrictions in setting TCP/IP parameters. This article is intended as supplemental information to our Windows 10 TCP/IP Tweaks, and the TCP Optimizer, only necessary in case your Windows version does not allow for other methods of changing TCP settings. It implies some prior knowledge in using the Windows Registry Editor, and modifying TCP parameters. In many Windows 10 Home builds, and older Windows 7/8 versions the user is restricted from modifying some TCP/IP parameters such as the CongestionProvider (congestion avoidance algorithm) and other related settings via netsh commands or PowerShell cmdlets. This article provides alternate methods of modifying TCP/IP settings using the Windows Registry, reverse-engineered from Windows 10 builds where it is possible to edit them, such as Windows Server/Pro. Displaying current TCP settingsMost TCP/IP related settings can be viewed either using Command Prompt, or the Windows PowerShell. Running either as administrator (right-click > Run as Administrator) allows for more control of what you are allowed to change. Windows 7 and later has several "templates" with sets of TCP parameters, and only one of them is currently in use depending on your connection properties, Windows build, etc. The most common TCP template in use in later builds is called "Internet". To find the template (set of TCP settings) currently in use by Windows, in admin command prompt or PowerShell use the command: netsh int tcp show supplemental To see current TCP settings: netsh int tcp show global Or via PowerShell cmdlets: Get-NetTCPSetting Changing the TCP CongestionProvider in the RegistrySome Windows 10 builds allow for changing the CongestionProvider (TCP Congestion Control/Avoidance Algorithm) and other TCP parameters via netsh, or PowerShell. However, under many other Windows Home builds (1607, 1703, 1709, 1803, 1809, 1903, 1909..) it fails with an error: "Property CongestionProvider is read-only" Please ONLY use the below undocumented Registry hack if your version of Windows does not allow you to change some TCP settings via admin Command Prompt or PowerShell, as described in our Windows TCP/IP Tweaks articles. The method described here is undocumented, and modifying the Windows Registry incorrectly can cause many issues, the least of which is corrupting your TCP/IP stack. That said, here is how to modify your CongestionProvider using the Windows Registry: 1) Run the Windows Registry editor "regedit", and navigate to the following key: 2) Edit the REG_BINARY value "00000000" (you may as well edit the equivalent value "04000000") very carefully! Note when editing those types of reg_binary/hex values, be careful not to change the positions of the original entries, as typing simply adds more hex pairs. Here is a direct export of the default Registry values from Windows 10 Pro: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a03-9b1a-11d4-9123-0050047759bc}\26] Note the 13th pair of hex numbers above highlighted in red, originally "05" in more recent Windows builds. That is the CongestionProvider pair, and the possible values are as follows: 00 - none Recommended value: CUBIC or CTCP. For more information on the different algorithms, see our TCP Congestion Control Algorithms Comparison article. The two values "00000000" and "04000000" above represent different "templates" of TCP parameters, as follows: "00000000" - Internet (this template is default in later Windows 10 builds) Other TCP Registry ParametersRefer to the image below for other possible changes to the TCP parameters: Merging a Registry FileIt is sometimes more convenient and useful to create a registry file, and merge it with the Windows Registry by double-clicking it, rather than opening regedit and navigating to the proper key to edit values. To do this, follow these steps: 1. Copy/Paste the text below (including the "Windows Registry Editor..." line) into a text file with a ".reg" instead of ".txt" extension, for example "enable-ctcp.reg" Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nsi\{eb004a03-9b1a-11d4-9123-0050047759bc}\26] Notes: Windows 8 TCP CongestionProviderUnder Windows 8, you can't set the congestionprovider to CTCP using netsh. It is still possible to change the congestion algorithm and other TCP parameters in the Windows Registry. The registry file below will let you do this, please note the registry key location is slightly different than under Windows 10. Windows Registry Editor Version 5.00 To use this, copy/paste the above text and save it into a registry file (as described in the "Merging a Registry File" section above). The binary values above affect many parameters: "Chimney Offload State" (offset 04, 00=disabled,01=enabled,02=auto), RSS (offset 05, 00=default/enabled,01=disabled), ECN Capability (offset 06, 00=disabled/default, 01=enabled), CTCP (offset 28, 00=none, 02 = ctcp), etc. See Also:Windows 8, 10, Server TCP/IP Tweaks
User Reviews/Comments:
rate:
avg:
![]() ![]() ![]() ![]() ![]() |