繁体   English   中英

服务阻止Windows启动

[英]Service blocks windows startup

我们已经自动启动了服务,在某些情况下,该服务花费大量时间来加载必要的数据,例如10分钟。 在这段时间内,它可以按预期工作(处理启动所需的一些巨大数据文件)。 我报告了C ++ SetServiceStatus函数的进展,它工作正常。

这项服务不依赖任何东西,只有一个依赖关系,这也是我们自己的服务。 它在那10分钟之后启动,它需要第一个“服务器”服务才能完全运行以接受请求。

我以为Windows会启动所有其他自动服务(通常在不到10分钟的时间内),然后开始正常工作,但是在启动过程中系统完全被阻止(我无法登录到计算机或ping计算机),直到此一项特定服务已启动(由SetServiceStatus报告SERVICE_RUNNING)。 当out服务完全启动时,还将启动其他缺少的系统服务(网络,远程桌面所需的服务,相当随机)。 这是正常行为吗? 为什么非依赖进程(如远程桌面,网络连接等)正在等待该进程? 我想念什么吗?

我试图添加一些依赖关系以推迟服务的启动,但是最终我得到了许多依赖关系,并且行为仍然以某种方式是随机的(因为服务的顺序是随机的)。 有时我可以登录,但是例如“开始”按钮仅在服务启动后的10分钟后才开始工作。 我不确定什么是“最后一项服务”以及要包含在我的依赖列表和某些计算机上的哪些服务可以禁用,并且会带来新的问题...所以我不喜欢这种解决方案非常。

另一个选项是我们服务的“延迟启动”选项。 当所有其他自动服务正在运行时,这应该启动服务。 好吧,这可以正常工作,Windows启动,计算机运行并响应,我们的服务已启动,但性能非常差,比平时慢许多倍,看来延迟启动的服务的优先级低得多。

我目前唯一的解决方案是向系统报告我的服务正在运行(通过SetServiceStatus函数),但是继续加载(此方法有效,我对其进行了测试)。 但是随后我们的依存服务出现了问题,因为它需要在第一个服务真正准备好时就启动。 它可以解决,但我仍然想知道这是怎么可能的,是否可以使用某种方式来保持自动启动服务的当前状态,该状态在真正完全启动并准备工作时会报告“已启动”。 感谢您的任何想法。

尽快设置SERVICE_RUNNING,然后在后台继续处理。 使您的其他服务对正在运行但尚未准备好服务的第一个服务具有弹性。 服务处于启动状态的时间越长,我们从不同Windows版本获得的问题就越多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM