服务阻止windows启动
Service blocks windows startup
我们已经自动启动了服务,在某些情况下,它会花费大量时间加载必要的数据,比如说10分钟。在此期间,它按预期工作(处理启动所需的一些巨大数据文件)。我通过C++SetServiceStatus函数报告程序,它运行良好。
这个服务不依赖任何东西,只有一个依赖,那就是我们自己的服务。它在这10分钟后启动,需要第一个"服务器"服务完全运行才能接受请求。
我原以为windows会启动所有其他自动服务(通常不到10分钟),然后开始正常工作,但在启动这一特定服务之前,系统在启动过程中被完全阻止(我无法登录计算机或ping计算机)(SetServiceStatus报告service_RUNNING)。当out服务完全启动时,其他丢失的系统服务(网络、远程桌面等所需的服务,这是随机的)也会启动。这是正常行为吗?为什么非依赖进程(如远程桌面、网络连接等)在等待此进程?我是不是错过了什么?
我试图添加一些依赖项来推迟服务的启动,但最终我发现许多依赖项和行为仍然是随机的(因为服务的顺序是随机的)。有时我可以登录,但例如"开始"按钮只有在我的服务启动的那10分钟后才开始工作。我不确定要依赖的"最后一项服务"是什么,以及要将哪些服务包括在我的依赖列表中,在某些计算机上,这些服务可能会被禁用,这可能会带来新的问题。。。所以我不太喜欢这个解决方案。
另一个选项是我们服务的延迟启动选项。这应该在所有其他自动服务都在运行时启动服务。好吧,这很好,windows启动,计算机运行和响应,我们的服务启动了,但性能很差,比平时慢了很多倍,似乎延迟启动的服务的优先级要低得多或类似的东西。
我目前唯一的解决方案是向系统报告我的服务正在运行(通过SetServiceStatus函数),但要继续加载(这很有效,我测试了它)。但是,我们的依赖服务有问题,因为它需要在第一个真正准备好时启动。这是可以解决的,但我仍然想知道这怎么可能,如果有什么东西我可以用来保持自动启动服务的当前状态,当它真正完全启动并准备好工作时,它会报告"已启动"。谢谢你的任何想法。
尽快设置SERVICE_RUNNING,然后在后台继续处理。使您的另一个服务对处于运行状态但尚未准备好服务的第一个服务具有弹性。服务处于启动状态的时间越长,我们从不同的windows版本中遇到的问题就越多。
- 在Windows上坚持Jupyter:内核无法启动
- Windows 服务在启动时不进入_tmain
- 如何读取windows服务启动的控制台应用程序的输出
- 如何通过具有通信行参数的procdump启动Windows应用程序?
- (Windows 10) 在不更新的情况下重新启动C++
- 如何在Windows上通过QProcess启动提升的子进程?
- C ++服务在Windows关闭然后启动后不启动
- LG电视通过串行使用Windows服务在PC开机后运行约30秒 - 如何更快地启动服务
- 如何检测第一次Windows启动
- 如何从 Windows 上的服务在未登录用户的桌面上启动应用程序
- 如何在跨平台C++中以毫秒为单位获得系统启动/启动时间(它应该在Windows / IOS / Android / MA
- 在使用WiX进行主要升级后无法启动Windows服务
- 如何在 c++ 中调用 unicode 函数 CreateProcessW 来启动 Windows 可执行文件
- Qt:无法使用QProcess启动Windows控制台
- 如何以编程方式启动Windows应用商店应用程序
- 如何在Qt中启动windows应用程序
- 如何解决应用无法启动 Windows 10 "Threshold 2"更新(1511,内部版本 15086) 后STATUS_DLL_INIT_FAILED (0xc0000142)
- 从没有管理员权限的应用程序启动Windows服务(c++)
- 以编程方式重新启动Windows服务
- 如何从32位代码中以64位启动Windows进程