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


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

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

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

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

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

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

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