Apparently in Windows Vista, Microsoft still enforce and hard-limit (hard coded in tcpip.sys) the maximum simultaneous half-open (incomplete) outbound TCP connection attempts per second that the system can make, as in Windows XP SP2, in order to protect the system from being used by malicious programs, such as viruses and worms, to spread to uninfected computers, or to launch distributed denial of service attack (DDoS). When the limit is hit, in Event Viewer, there will be such an entry:
EventID 4226: TCP/IP has reached the security limit imposed on the number of concurrent TCP connect attempts
Unlike Windows XP SP2 which has 10 maximum incomplete concurrent connection attempts limit per second, Windows Vista default limit is based on which edition of Vista users are using. For example, Home Basic has maximum limit of 2, and Vista Ultimate is 25 per second. Normal Windows Vista users should not face any problem or slow network connection with the half-open connections limit. However, heavy P2P (peer-to-peer) applications users such as uTorrent, BitTorrent, BitComet, Azureus, ABC, eMule (eDonkey network), etc, or P2PTV such as TVants, PPLive, PPStream, Sopcast, etc may face some error or slow download and upload speed due to this limit.
Due to enhanced security, to fix or crack the TCP concurrent connection limit in Vista is not as easy as in Windows XP. To remove maximum concurrent half-open connection limits in Windows Vista, apply the patched tcpip.sys with the following steps:
- Download patched tcpip.sys: Vista TCP/IP and UAC Auto Patcher (patched tcpip.sys is contained inside the archive).
- Open command prompt, and run the following 2 commands:
takeown /f c:\windows\system32\drivers\tcpip.sys
cacls c:\windows\system32\drivers\tcpip.sys /G "username":F
Replace username with the actual user name that used to log on to Windows Vista currently.
The second command can also replace with the improved icacls:
icacls c:\Windows\System32\drivers\tcpip.sys /grant "username":f
- Disable the TCP/IP Auto-Tuning feature by running the following command in command prompt:
netsh int tcp set global autotuninglevel=disable
- For 64-bit Windows Vista (x64), the integrity checks need to be disabled as it need all drivers to be signed. So run the following command in DOS prompt:
bcdedit.exe -set loadoptions DDISABLE_INTEGRITY_CHECKS
Note: Above command no longer supported, and users require to press F8 on system startup to bypass driver signing integrity check.
- Replace the tcpip.sys in C:\windows\system32\drivers folder with the patched tcpip.sys downloaded from step 1 (remember the use the correct x64 or x86 version）. Normally, this procedure can be done by simply login to Windows Vista with administrator account. However, if the process failed, reboot the computer and then press F8 to boot up in Safe Mode, and then copy and paste overwrite the tcpip.sys.
- Next, the maximum number of TCP half complete connection limits need to be set in registry. Open registry editor (regedit), and navigate to the following registry key:
- Right click on the right pane, select “New”, then select “DWORD value”. Enter the new value name as TcpNumConnections.
- Double click on TcpNumConnections registry value, and modify the value data to the desired maximum TCP/IP connection limit that you want to allow, in decimal value. For example, enter 500 as the value data for TcpNumConnections. You can use any limit that you prefer.
Alternatively, download this
registry registration file(no longer available) that when executed, will set the TCP simultaneous connection limit to 16777214 (you can always modify the value in the file or in the registry after applied).
- Restart computer.
Update 5 (Latest): Since Windows Vista and Windows Server 2008 SP2, there is no more restriction (now unlimited) concurrent half open TCP/IP connection limit.
Update 4: Windows Vista Event ID 4226 Auto Patcher
Windows Vista Event ID 4226 Auto Patcher has been renamed as Vista tcpip.sys and UAC Auto Patcher, which now has more than 6 versions of auto patcher download links for different versions of tcpip.sys with the release of various hotfixes and SP1. Visit the page for details.
Update 3: Half-Open Limit Fix (Automated tcpip.sys Patch using Test Self-Signed Certificate)
Update 2: Driver Version: CrackTcpip.sys for Vista SP1 v.668 – a non-patching method to bypass TCP connection limit.
Update 1: Also available is TCP/IP auto patcher for 64-bit (x64) Windows Vista SP1.
Gui Version: VistaTcpPath TCP Auto Patcher which works for Vista RTM (non-SP1) version of tcpip.sys.
(resources no longer available)
With thanks to YaronMaor for batch script.
The TCP connection limit which trigger Event ID 4226 has now increased to 500 (or any other value you set), and will likely fix the error for re-occurring again.