gpt4 book ai didi

c++ - 服务阻止 Windows 启动

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:43 28 4
gpt4 key购买 nike

我们已经自动启动服务,在某些情况下,它会花费大量时间加载必要的数据,比如说 10 分钟。在此期间它按预期工作(处理启动所需的一些巨大数据文件)。我通过 C++ SetServiceStatus 函数报告进程,它工作正常。

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

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

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

另一个选项是我们服务的延迟启动选项。这应该在所有其他自动服务运行时启动服务。好吧,这工作正常,Windows 启动,计算机运行并响应,我们的服务已启动,但性能非常糟糕,比平时慢很多倍,似乎延迟启动的服务的优先级低得多或类似的东西。

我目前唯一的解决方案是向系统报告我的服务正在运行(通过 SetServiceStatus 函数),但要继续加载(这可行,我测试过)。但是我们的依赖服务有问题,因为它需要在第一个真正准备好时启动。它可以解决,但我仍然想知道这怎么可能,如果有什么我可以用来保持自动启动服务的当前状态,当它真正完全启动并准备工作时报告“启动”。感谢您的任何想法。

最佳答案

尽快设置SERVICE_RUNNING,然后在后台继续处理。使您的其他服务能够适应第一个处于运行状态但尚未准备好提供服务的服务。服务处于启动状态的时间越长,我们从不同的 Windows 版本中遇到的问题就越多。

关于c++ - 服务阻止 Windows 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13362753/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com