I guess this is a perfect example of how people get cynical of software updates after going through the routine for awhile. And this is coming from someone who enjoys solving technical problems when he is in the right mood!
So recently, I started having some long-running software complain that it can't bind to a certain TCP port because "the port is already in use". I immediately pulled out my trusty CurrPorts and check out which mysterious program is hogging the port behind my back (yeah I could use netstat, but who has time to memorize all those command line arguments, right?)
To my surprise, nothing, nadda. No one is using that port. Yet that port is mysteriously barred from use. It's like you suddenly cannot open the door to your home with your existing key. Incredibly frustrating.
Anyway, after 2 whole days of research, I finally found the culprit. Apparently after a certain Windows update (1809 or 2004 from various sources, I didn't care to verify), Windows now reserves certain ports (called "Administered port exclusions") for Hyper-V (not sure why that would affect me, since I am not using it).
To view the list, using the command line:
You'd be surprised by how many ports are reserved. On my machine, this is the output:
Here are some associated links from my research:
- Reserved ports in Windows 1809
- How do I find out why certain ports are excluded and delete the exclusion?
- Many excludedportranges how to delete - hyper-v is disabled
Anyway, the solution for me was to issue this command:
It basically sets the EnableExcludedPortRange registry value to 0. A reboot is required.
This is incredibly frustrating because it came out of nowhere, no meaningful error message was provided and even trying to research the problem took a lot of time to figure out the right keywords that will yield the right answer. It was as if the guys who came up with this wanted to inflict the maximum pain on the affected user (or more likely they didn't really give a f**k).
Update (1 Sep 2021):
Discovered that a better solution is to issue this command at an elevated CMD:
After a reboot, the new reserved ports will be: