Диспетчер управления службами
Диспетчер управления службами (англ. Service Control Manager, SCM) — в Microsoft Windows (\Windows\System32\Services.exe) особый системный процесс, реализующий технологию удалённого вызова процедур (англ. remote procedure call, RPC). Обеспечивает создание, удаление, запуск и остановку служб ОС. Стартует при загрузке системы, обеспечивает работу журнала событий, а также позволяет выполнять манипуляцию процессами удалённой машины.[1]
Функции
[править | править код]Функции данного сервиса представляют интерфейс для выполнения следующих задач:
- Монтирование базы данных установленных служб
- Запуск служб при загрузке операционной системы, либо по требованию
- Получение количественной и качественной информации об установленных службах и системных драйверах
- Пересылка управляющих запросов запущенным службам
- Блокировка и разблокировка базы данных служб
База данных
[править | править код]Монтирование базы данных установленных служб производится в системном реестре и располагается в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
. Данная база используется SCM и другими программами для добавления, изменения или конфигурирования служб.
Начальная структура базы служб создаётся при установке операционной системы и включает в себя следующие данные:
- тип службы
- тип запуска
- уровень контроля ошибок
- полный путь к исполняемому файлу
Также информация о службе может быть дополнена следующими данными:
- информация о зависимостях службы
- логин и пароль учётной записи, с правами которой нужно запускать службу.
В структуре данной базы обязательно присутствуют записи, описывающие системные драйверы, необходимые для запуска операционной системы.
Алгоритм работы
[править | править код]При загрузке операционной системы SCM запускает все службы, у которых указан тип запуска «Автоматически», а также все службы, указанные в зависимостях автозапускаемых служб. Таким образом, при запуске службы с типом запуска «Автоматически», у которой в зависимостях указаны службы с типом запуска «Вручную», последние также будут запущены, несмотря на свой тип запуска.
После загрузки операционной системы пользователь может вручную запустить необходимые службы, воспользовавшись консолью управления службами.
Пользователь также может указать параметры запуска службы, которые будут переданы как аргументы функции StartService при запуске.
Во время запуска службы диспетчер выполняет следующие действия:
- Получение сохранённой в базе данных информации по учётной записи, с правами которой должна запускаться служба
- Авторизация под этой учётной записью
- Получение пользовательского профиля
- Подготовка процесса службы к выполнению
- Привязка доступов учётной записи к порождённому процессу
- Запуск процесса службы на выполнение
Особенности функционирования
[править | править код]При завершении процесса services.exe на экране появится окно Завершение работы системы (так же, как и при завершении процесса Lsass.exe).
Источники
[править | править код]- ↑ Service Control Manager information on MSDN . Дата обращения: 16 января 2009. Архивировано 12 декабря 2010 года.