Поделиться через


Список записей службы

Так как каждая запись службы считывается из базы данных установленных служб, SCM создает запись службы для службы. Запись службы включает в себя:

  • Имя службы
  • Тип запуска (автозапуск или запуск по запросу)
  • Состояние службы (см. структуру SERVICE_STATUS)
    Тип
    Текущее состояние
    Допустимые коды элементов управления
    Код выхода
    Указание ожидания
  • Указатель на список зависимостей

Имя пользователя и пароль учетной записи указываются во время установки службы. SCM сохраняет имя пользователя в реестре и пароль в безопасной части локального центра безопасности (LSA). Системный администратор может создавать учетные записи с паролями, которые никогда не истекают. Кроме того, системный администратор может создавать учетные записи с паролями, которые истекают и управляют учетными записями, периодически изменяя пароли.

SCM сохраняет две копии пароля учетной записи пользователя, текущий пароль и пароль резервного копирования. Пароль, указанный при первом установке службы, хранится в качестве текущего пароля, а пароль резервной копии не инициализирован. Когда SCM пытается запустить службу в контексте безопасности учетной записи пользователя, он использует текущий пароль. Если текущий пароль используется успешно, он также сохраняется в качестве пароля резервного копирования. Если пароль изменяется с помощью функции ChangeServiceConfig или служебной программы панели управления Services, новый пароль сохраняется в качестве текущего пароля, а предыдущий пароль хранится в качестве пароля резервного копирования. Если SCM пытается запустить службу и текущий пароль завершается ошибкой, он использует пароль резервного копирования. Если пароль резервного копирования используется успешно, он сохраняется в качестве текущего пароля.

SCM обновляет состояние службы, когда служба отправляет уведомления о состоянии с помощью функции SetServiceStatus. SCM поддерживает состояние службы драйверов, запрашивая систему ввода-вывода вместо получения уведомлений о состоянии, как это делается из службы.

Служба может зарегистрировать дополнительные сведения о типе, вызвав функцию SetServiceBits. Функции NetServerGetInfo и NetServerEnum получают поддерживаемые типы служб.