Why is System process listening on Port 80?

82

27

I am running Windows 7 RC1. I have multiple issues getting IIS to work on my system and today when I installed a new application and I tried to load it using http:\localhost\MyApplication I get absolutely no errors and I get no page load. Just a pretty, white blank page.

I did some digging and I found something about some other process listening on port 80 so I did a scan using netstat -aon | findstr 0.0:80 and discovered that PID 4 was listening on that port.

PID 4 does not show in task manager so I fired up Process Explorer and it showed me that PID 4 is the System process. (Multiple google searches seems to indicate that System always uses PID 4).

Since then I am basically stuck. I have no idea why System needs port 80 and what to do about it.

If you google the following strings you will find two helpful Experts-Exchange articles at the top of the search results and you can read them for some helpful information.

(If I gave the direct URL to the pages then Experts-Exchange would ask you to pay...but when you click on the results from a google search you can scroll all of the way to the bottom to read the exchanges.)

Here are the google searches...
"System Process is listening on port 80 (Vista)"
"SYSTEM Process is listening on Port 80 and Preventing IIS Default Website from Running"

The last entry from the first result showed how to do a trace of http.sys at the following URL:

http://blogs.msdn.com/wndp/archive/2007/01/18/event-tracing-in-http-sys-part-1-capturing-a-trace.aspx

Trace showed nothing useful. Any thoughts?

Seth Spearman

Posted 2009-09-18T14:25:24.813

Reputation: 1 389

HTTP service state can help you to identify the running services in case of System process with PID 4. Run netsh http show servicestate and look at Registered URLs or Logging information for more info. – pazadev – 2016-06-13T15:51:08.980

Same problems here, except, I tried all answers as suggested and nothing. I can't just start shutting down services because this is an off-site cloud server. – Jerry Dodge – 2012-04-02T06:30:34.630

Did you mean that you are running Windows 7 SP1, and not RC1? – cmorse – 2012-07-27T17:28:04.217

4

Are you running Skype? https://support.skype.com/en/faq/FA148/which-ports-need-to-be-open-to-use-skype

– Plutext – 2012-08-04T23:17:29.317

Probably that does not actually solve your problem, anyway you can change the Apache port to 8080... Well, that is not a solution, but may work temporarily until you get the proper solution... @rakslice solution solved the problem to me – Girardi – 2013-03-01T22:46:52.697

The skype thing is the solution! shutdown skype and start apache. done! – Codebeat – 2013-12-24T20:21:55.293

Answers

28

This post on Getting Apache to run on port 80 on Windows 7 (internet archive) describes your point.

It seems the 'http.sys' (Windows Remote Management?) service is enabled by default in Windows 7.
Run through the comments on that link for some more notes...

the hypen-site does not necessarily have the only answers.

nik

Posted 2009-09-18T14:25:24.813

Reputation: 50 788

2And this is still relevant today with Windows 8.1 – Sverrir Sigmundarson – 2014-07-29T08:28:51.867

3The site is offline. Can you add the essential information to the answer? – fixer1234 – 2015-08-07T08:11:19.467

4For me it was the World Wide Web Publish Service - was set to automatic by default, and must use port 80. – rockerston – 2015-12-31T18:46:23.503

1Upgraded from windows 7 to windows 10 and it turned on World Wide Web Publish Service to automatic. Crazy because I don't even use IIS. – Phil_1984_ – 2016-09-07T18:16:14.930

2

Another great article: http://www.devside.net/wamp-server/opening-up-port-80-for-apache-to-use-on-windows

– thorn – 2014-03-28T22:37:36.737

49

'Web Deployment Agent Service' runs on port 80 as System. You might have this running if you are using WebMatrix.

N Reed

Posted 2009-09-18T14:25:24.813

Reputation: 681

net stop "Web Deployment Agent Service" freed up 80 for me. – Philippe Signoret – 2016-02-20T20:52:26.257

Related link: http://eat.cheezburger.com/author/johnc/. I uninstalled the two porgrams listed: "Microsft Web Deploy 2.0" and "Web Deployment Tool" (as well as WebMatrix itself)

– Frank Schwieterman – 2011-10-03T20:51:24.487

1

See http://stackoverflow.com/questions/5867392 for info on how to change this port.

– tony722 – 2013-03-25T21:23:47.147

I Stopped the Web Deployment Agent Service and set it to Manual start, then confirmed that I can still Publish to IIS on this server from Visual Studio and it's all good. Port 80 is now available to me, and my other functionality still works. – JMD – 2013-07-26T17:06:50.920

46

Open Services.msc and stop this service "Sql server reporting services(MSSQLSERVER)"

enter image description here

I had tried EVERYTHING, but that worked for me:

further instructions on how to stop that service are below

  1. Right click on My Computer
  2. Select Manage
  3. Double click Services and Applications
  4. Then double click Services
  5. Right click on "Sql server reporting services(MSSQLSERVER)"
  6. Select Stop ...and voila, port 80 was released

Isabel Grobler

Posted 2009-09-18T14:25:24.813

Reputation: 469

"Not using that port? I'll take that! Oh sorry did you need that? Didn't you get the memo?" – batCattle – 2014-10-23T19:48:32.393

this worked for me.. I didn't expect it because SQL server uses 3306 by default.. but indeed.. SQL server reporting uses port 80. – barlop – 2016-12-19T00:15:08.610

1@AssafLevy your comment is a disservice to people and clouds things and might make some think the answer isn't as good as it is. It's not SQL Server, it's SQL server reporting. SQL server runs on 3306. SQL server reporting is the thing that is the issue and runs on port 80 – barlop – 2016-12-19T00:15:21.507

7+1. It was indeed SQL Server in my case. – Assaf Levy – 2012-01-03T10:53:10.307

This worked for me too. I stopped all of the SQL related services (including this one) and port 80 was released. – Mark Lakata – 2012-11-20T23:34:27.920

+1 but I do need SSRS running so I guess going forward I need to tell SSRS to use a different port? – Chris Moutray – 2013-06-28T10:46:34.483

20

You can stop the HTTP service temporarily from the command line:

  1. Run an administrator command prompt (e.g. Start, search for cmd, right click on it, choose "Run as administrator", approve the UAC prompt if any.)
  2. Type net stop HTTP
  3. If there are other running services that depend on the HTTP service, you'll get a list; double check to see if there's anything listed there you can't bear to do without. Or, if you're just stopping HTTP to use port 80 temporarily, make a note of those dependent services that you'll want to restart once you're done with the port. Either way, if it's okay, enter y to continue.
  4. Some dependent services might throw up stop control warnings that cancel the operation; just repeat net stop HTTP until it is stopped (i.e. until it says The HTTP service was stopped successfully.)
  5. Later on, you can restart any of the dependent services, using net start or by using the Services item in Administrative Tools, and the HTTP service will be started again automatically.

rakslice

Posted 2009-09-18T14:25:24.813

Reputation: 2 276

For me, it stopped all related services, then said "Cannot stop HTTP service", and starting net stop http again tells me to "try again later". What is wrong with my system :-) – Tominator – 2014-07-04T07:55:32.320

Using net stop HTTP worked for me. – Paul Williams – 2014-09-22T00:26:55.790

If you're getting a try again later message, you may be running the Microsoft Web Deployment Service. http://support.microsoft.com/kb/2597817 If you're actually using that to maintain IIS you probably didn't want to be stopping HTTP in the first place =).

– rakslice – 2015-02-05T21:18:12.293

doing net stop http, from administrative, i get "The HTTP service could not be stopped" then "The service is starting or stopping. Please try again later" – barlop – 2016-12-18T23:14:58.743

@barlop re that command not working for me, for me it was stopping the "sql server reporting" service, a solution suggested in another answer to this question, that worked. – barlop – 2016-12-19T00:44:26.080

1This is very helpful to determine the dependent services - thanks! – Rory – 2013-01-21T13:11:31.743

this was the solution for me! – Girardi – 2013-03-01T22:44:33.977

3

telnet localhost 80 returns HttpAPI/2.0 which in turn means to "Sql server reporting service". Stopping the same releases port 80.

vishnu

Posted 2009-09-18T14:25:24.813

Reputation: 31

I found that SQL server reporting services was also the culprit. – J.T. – 2012-04-06T20:12:02.303

This is a useful debug tool, to use 'telnet' to get more information than a web browser will give you. Thanks. SQL server reporting services was the culprit in my case too. – Mark Lakata – 2012-11-21T00:32:50.063

0

Take ProcessExplorer, run it, open TCP/IP properties of every process (service), find process (service) that listening to http (80) port and switch it off.

I found Autodesk EDM Server was listening to http (80) port.

nICEsCREAM

Posted 2009-09-18T14:25:24.813

Reputation: 17

3This doesn't work for services running inside system (ie, with a PID of 4) – N Reed – 2011-09-04T11:46:15.277

I think you are better off doing 'netstat -anbo'. It will tell you straight up what is on port 80 ... except if it is PID 4. – Mark Lakata – 2012-11-21T00:35:33.187