The 30-second fix: What grabbed port 80?
This error usually pops up when you're trying to stream something through Windows Media Center or a similar app. The exact message is NS_E_PORT_IN_USE_HTTP (0XC00D158B) and it means another program already has a lock on port 80. That's the standard HTTP port, and only one app can use it at a time.
Most of the time, the culprit is something obvious. I had a client last month whose whole streaming setup died because Skype had sneakily taken port 80 for incoming calls. Another time it was a local web server running IIS that the user forgot they'd installed.
Here's what to check first — it takes 30 seconds:
- Open Command Prompt as admin. Hit Start, type
cmd, right-click it, choose Run as administrator. - Run this command:
netstat -aon | findstr :80 - Look for lines showing LISTENING on port 80. The last column is the PID (process ID).
- Note the PID, then run:
Replace [PID] with the actual number.tasklist | findstr [PID]
If you see Skype, IIS, Apache, or anything named w3wp.exe (that's IIS), you've found your problem. Open Task Manager, find that process, and end it. Or just uninstall the app if you don't need it.
This fixes it 80% of the time. Test your streaming app immediately. If it works, you're done. If not, move to the next step.
5-minute fix: Check URL reservations and disable services
Sometimes the process isn't obvious. Windows itself might have reserved port 80 for something like HTTP.sys — that's the kernel-level driver that handles HTTP requests for IIS and some other services. You can see these reservations with this command:
netsh http show urlacl
Look for any entry that includes http://+:80/. If you see one, the reservation could be blocking your app. You can delete it with:
netsh http delete urlacl url=http://+:80/
But be careful — if you remove a reservation that's needed by another service (like Windows Update or SQL Server Reporting Services), you'll break that too. Only delete it if you're sure it's not critical.
Another common offender is World Wide Web Publishing Service (W3SVC). Even if IIS isn't running, this service can grab port 80 at boot. Stop it with:
net stop W3SVC
And disable it permanently via Services.msc — set it to Manual or Disabled.
Also check for BranchCache or Windows Remote Management. Both can hold port 80. Kill those services if you don't need them.
15-minute fix: Dig into registry and network stack
If the error still won't budge, something is really stubborn. I've seen this when a third-party firewall or antivirus intercepts port 80 traffic before your app can grab it. Temporarily disable any security software to test.
Another rare cause: a corrupted TCP/IP stack. Reset it with:
netsh int ip reset
netsh winsock reset
Then reboot. This blows away any custom socket bindings that might be lingering.
If you're on a corporate network, group policy might force a specific app to own port 80. Check with your IT admin. But for home users, this is almost never the case.
Lastly, check the registry for orphaned entries. Navigate to:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
Look for a value named UrlAllowList or NonForwardablePorts. If you see port 80 listed, delete that entry. Be very careful editing the registry — back it up first.
If none of this works, you might be running a 32-bit app on a 64-bit system where port 80 is already taken by the 64-bit version of something. In that case, try running your app in a virtual machine with its own IP address.
One last trick: change your app to use a different port. Not always possible with Windows Media Center, but some streaming software lets you pick an alternate port. Port 8080 or 8000 often works.
Bottom line: This error means a port fight. The quickest win is finding the squatter withnetstatand kicking it out. If that fails, go deeper withnetsh. The registry and stack resets are last resorts. I've seen this maybe a dozen times in the wild, and thenetstattrick solved it every single time except once — that one was a misconfigured load balancer.