Windows服务不能自动启动?

我们最近在Windows Server 2008 R2服务器上遇到了一些令人讨厌的时间同步问题。

我追溯到一个非常简单的事情: Windows时间服务未启动 当时间服务没有运行时,通过NTP不可能同步时间…

Windows时间服务设置为在服务控制面板中“自动”启动 ,我将其双重和三重检查。 我也检查了事件日志,我没有看到任何服务失败或类似的东西。 实际上,在安装了Windows Update和重新启动服务器之后,它看起来很像Windows时间服务从未自动启动。 (这是每周六下午7点发生的。)

我开始时间服务的时候,时间同步正常。

那么,问题是:为什么服务设置为“自动启动”…不能自动启动? 这对我来说似乎有点疯狂。

如果PC不在域中,W32time将不会自动启动。 该死的微软!

尝试运行: sc triggerinfo w32time start/networkon stop/networkoff

一个可能的解释,从这个线程 :

我理解它的方式,基本上服务不会打开,直到你或任务或一个硬件或networking,启动一个事件打开它。 当您尝试更新时间时,您调用该服务并触发事件“启动xyz服务”。 它也可以在完成时closures服务。 这非常简单。 这是七个速度更快的原因之一,因为许多服务只在需要的时候运行,而不是一直运行,等待某些东西来使用它们。 实际上,您不必尝试决定您需要或不需要的服务,他们可以自己照顾自己。

他正在谈论Windows 7中的新内核。

由于Windows Server 2008 R2和Windows 7共享相同的内核,我不知道分辨率是否相同?

他们build议将服务设置为自动/延迟启动来解决这个问题。

我仍然认为设置为自动的服务不会被启动是完全疯狂的…我并不完全理解延迟自动启动和自动启动之间的语义差别,但是如果它起作用,我想我不会抱怨。

不幸的是,用Windows时间手动打开日志logging 。

“什么会导致服务不能自动启动”没有好的答案。 唯一真正的原因是依赖项没有正确启动,或者在服务启动时出现某种崩溃。 没有日志,你的猜测和我们一样好。

我build议打开窗口时间logging下一个补丁周期。 如果服务出现了,那么你们都很好,如果没有,你们还有什么需要解决的。

就像说明一样,我看到不止一次服务决定在修补程序后没有正确的启动,而是在第一次重新启动之后正常工作。


开始写评论,然后跑出空间。

你实际上会从这个日志中得到一些信息。

  1. 如果根本没有日志,甚至没有开始。 你可以从那里开始研究,每一点信息都会帮助解决这些问题。

  2. 由于这是一个debugging日志,你打开上面的链接,你应该得到一些东西,如果它试图启动。 你至less会有一个更好的想法,为什么它不能成功启动。

你已经发现了作为系统pipe理员的巨大痛苦之一:你需要日志来告诉你从哪里开始寻找,但是服务并没有达到可以生成日志的程度。 一个经典的鸡和鸡蛋的问题。

谢谢,我已经设置了一些不在Windows Server 2016上启动的服务,以延迟它的工作,但是,我无法做到这一点的防病毒服务,因为它是免受修改。

但是,我发现这个解决方法,即使是2008 R2,它的工作: https : //support.microsoft.com/en-us/help/922918/a-service-does-not-start-and-事件-7000和7011,都-login窗口-服务器- Windows 2003的服务器-2008-和Windows的服务器-2008-R2

这可能会使任何服务开始,而不会让他们延迟开始。 它为反病毒工作,这是肯定的。

我将在这里粘贴最有用的部分:

要解决此问题,请修改registry以增加服务控制pipe理器的默认超时值。 要将此值增加到60秒,请按照下列步骤操作:

 Click Start, click Run, type regedit, and then click OK. Locate and then click the following registry subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control In the right pane, locate the ServicesPipeTimeout entry. Note: If the ServicesPipeTimeout entry does not exist, you must create it. To do this, follow these steps: On the Edit menu, point to New, and then click DWORD Value. Type ServicesPipeTimeout, and then press ENTER. Right-click ServicesPipeTimeout, and then click Modify. Click Decimal, type 60000, and then click OK. This value represents the time in milliseconds before a service times out. Restart the computer.