何时 Windows 服务启动类型可以/应该是“启动”或“系统”而不是“自动”?

何时 Windows 服务启动类型可以/应该是“启动”或“系统”而不是“自动”?

虽然运行Services.mscGUI 可以手动将 Windows 服务启动类型设置为“自动”、“自动(延迟启动)”、“手动”或“禁用”,但服务的配置存储在注册表树可以通过命令 shell 和注册表编辑器进行配置。

当使用sc config或 时regedit,服务启动类型的选项为01234,分别对应于BootSystemAutomaticManualDisabled启动和系统现在是可配置的选项。将任意服务的启动值数据更改为0确实会使 Services.msc 在启动类型列中反映“Boot”(尽管尝试通过 GUI 编辑该服务启动类型仅提供常规的四个选项)。

看起来,启动和系统是实用的附加选项,但显然很少或根本没有默认的 Windows 服务利用它 - 甚至连看起来非常重要的 Windows 组件(如 Power、Windows Defender 高级威胁防护或加密服务)也没有利用它。

我的问题是:

  • 将服务设置为启动是否安全,Boot或者System是否希望服务比Automatic服务更早运行?
  • 这样做会导致系统不稳定吗?(如果答案是“视情况而定”,请指出一些提供理由的文档,理想情况下可以使用这些文档来确定哪些服务(如果有的话)可以安全且稳定地执行此操作。)
  • 有什么具体的原因吗?不是建议使用这些启动选项吗?
  • 是否有关于这些启动选项的目的/用途的实际 Microsoft 文档?(到目前为止我还没有找到。)

答案1

服务控制管理器 (SCM) - services.exe,负责管理 Windows 服务。在此上下文中,服务包括用户模式服务 (.exe) 和内核模式驱动程序 (.sys)。

用户模式服务也可以作为 DLL 实现,但需要由“ .exe”进程托管,许多由 svchost.exe 托管的服务就是这种情况。

服务数据库存储在以下注册表项下:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

为了向 SCM 注册新服务或控制服务,可以使用许多 API。请参阅https://learn.microsoft.com/en-us/windows/win32/api/winsvc/

如果你查看配置服务的文档,使用 API更改服务配置,其中包括设置我们看到的开始类型:

SERVICE_BOOT_START   - 0x00000000 - A device driver started by the system loader. This value is valid only for driver services.
SERVICE_SYSTEM_START - 0x00000001 - A device driver started by the IoInitSystem function. This value is valid only for driver services.

因此这些启动类型(0 和 1)适用于驱动程序,而不是用户模式服务。MMC 管理单元 Services.msc 仅显示用户模式服务,而不显示驱动程序。

我希望这有帮助。

相关内容