我也是很疑惑的,这个问题大多发生在windows Server系统上,搜索资料显示,也有极其少例发生在桌面版windows,我的环境是server 2019,搜索结果看到有不少 server2012 2016 2008的环境存在这个问题。
首先附上微软知识库链接:http://msdn.microsoft.com/en-us/library/aa364434
为什么服务列表看不到这个服务?(services.msc)
官方原话(谷歌翻译过来):
Http.sys使用端口80.它是httpapi的驱动程序组件,服务器http栈(你可以在http://msdn.microsoft.com/en-us/library/aa364434找到有关这项技术的更多信息) (VS.85).aspx)。在您的情况下,正在运行一些使用http.sys监听端口80的应用程序。这阻止了Apache使用端口80.我们为应用程序提供了一种机制来帮助控制端口共享,但我需要查看具体的导致你这种冲突的应用程序。如果你能给我们输出以下命令“netsh http show servicestate”,那么它将允许我找出哪个应用程序正在使用http.sys。
- 注册表定位到 hkey_local_machine//systems//currentControlSet//services//HTTP,可以看到这个服务是存在的,此外,在CMD中使用 sc queryex http service可以查询这个服务的详细信息,但是也是看不懂,
解决方案(微软社区)
- Sc config http start=disabled (禁止开机启动http服务)
- net stop http (尝试停止,因为涉及到驱动,只能禁用后要重启生效)
- 重启电脑生效
- 如果想查明谁调用了http协议栈api,可以这样做(需要先让http服务正常运行)
- sc config http stat = demand (设置手动运行)
- 重启电脑
- netsh http show servicestat