SCM 维护注册表中已安装服务的数据库。 数据库由添加、修改或配置服务的 SCM 和程序使用。 下面是此数据库的注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services。
此密钥包含每个已安装服务和驱动程序服务的子项。 子项的名称是服务的名称,由 service 配置程序安装服务时由 CreateService 函数指定。
安装系统时会创建数据库的初始副本。 数据库包含系统启动期间所需的设备驱动程序的条目。 数据库包括有关每个已安装服务和驱动程序服务的以下信息:
- 服务类型。 这表示服务是在其自己的进程中执行还是与其他服务共享进程。 对于驱动程序服务,这指示服务是内核驱动程序还是文件系统驱动程序。
- 开始类型。 这表示服务或驱动程序服务是在系统启动时自动启动(自动启动服务)还是 SCM 在服务控制程序(demand-start service)请求时启动它。 启动类型还可以指示服务或驱动程序服务已禁用,在这种情况下,无法启动该服务或驱动程序服务。
- 错误控制级别。 这指定在系统启动期间服务或驱动程序服务无法启动并确定启动程序将执行的作时出错的严重性。
- 可执行文件的完全限定路径。 文件扩展名为服务.EXE,驱动程序服务.SYS。
- 用于确定启动服务或驱动程序服务的正确顺序的可选依赖项信息。 对于服务,此信息可以包括 SCM 必须先启动的服务列表,然后才能启动指定的服务、服务所属的加载排序组的名称,以及一个标记标识符,该标识符指示服务的加载排序组中服务的启动顺序。 对于驱动程序服务,此信息包括必须在指定驱动程序之前启动的驱动程序列表。
- 对于服务,可选帐户名称和密码。 服务程序在此帐户的上下文中运行。 如果未指定帐户,则服务在 localSystem 帐户 上下文中执行。
- 对于驱动程序服务,I/O 系统用来加载设备驱动程序的可选驱动程序对象名称(例如 \FileSystem\Rdr 或 \Driver\Xns)。 如果未指定名称,I/O 系统会根据驱动程序服务名称创建默认名称。
注意
此数据库也称为 ServicesActive 数据库或 SCM 数据库。 必须使用 SCM 提供的函数,而不是直接修改数据库。