服务记录列表

当从已安装服务的数据库读取每个服务条目时,SCM 会为该服务创建一条服务记录。 服务记录包括:

  • 服务名称
  • 启动类型 (自动启动或按需启动)
  • 服务状态 (请参阅 SERVICE_STATUS 结构)
    类型
    当前状态
    可接受的控制代码
    退出代码
    等待提示
  • 指向依赖项列表的指针

帐户的用户名和密码是在安装服务时指定的。 SCM 将用户名存储在注册表中,将密码存储在本地安全机构 (LSA) 的安全部分。 系统管理员可以创建密码永不过期的帐户。 或者,系统管理员可以创建密码过期的帐户,并通过定期更改密码来管理帐户。

SCM 保留用户帐户密码的两个副本:当前密码和备份密码。 首次安装服务时指定的密码将存储为当前密码,并且不会初始化备份密码。 当 SCM 尝试在用户帐户的安全上下文中运行服务时,它使用当前密码。 如果当前密码已成功使用,则还会将其保存为备份密码。 如果使用 ChangeServiceConfig 函数或服务控制面板实用工具修改密码,则新密码将存储为当前密码,而以前的密码将存储为备份密码。 如果 SCM 尝试启动服务,但当前密码失败,则它使用备份密码。 如果备份密码已成功使用,则会将其保存为当前密码。

当服务使用 SetServiceStatus 函数向服务发送状态通知时,SCM 会更新服务状态。 SCM 通过查询 I/O 系统来维护驱动程序服务的状态,而不是像从服务接收状态通知一样。

服务可以通过调用 SetServiceBits 函数来注册其他类型信息。 NetServerGetInfoNetServerEnum 函数获取受支持的服务类型。