虽然运行Services.msc
GUI 可以手动将 Windows 服务启动类型设置为“自动”、“自动(延迟启动)”、“手动”或“禁用”,但服务的配置存储在注册表树可以通过命令 shell 和注册表编辑器进行配置。
当使用sc config
或 时regedit
,服务启动类型的选项为0
、1
、2
、3
和4
,分别对应于Boot
、System
、Automatic
、Manual
和Disabled
。启动和系统现在是可配置的选项。将任意服务的启动值数据更改为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 仅显示用户模式服务,而不显示驱动程序。
我希望这有帮助。