База полезных знаний

Диспетчер управления службами (SCM)

Вспомним, что ранее под «службой» в Windows понимался либо серверный процесс, либо драйвер устройства. В этом разделе службы рассматриваются в качестве процессов пользовательского режима. Службы похожи на «процессы-демоны» в UNIX или на «обособленные процессы» VMS тем, что они могут быть настроены на автоматический запуск при загрузке системы, не требуя при этом интерактивного входа в систему.

Они также могут быть запущены вручную (например, путем запуска средства администрирования "Службы" или путем вызова Windows-функции StartService). Обычно службы не взаимодействуют с пользователями, вошедшими в систему, хотя есть особые условия, открывающие такую возможность.

Диспетчер управления службами является специальным системным процессом, запустившим образ %SystemRoot%\System32\Services.exe, отвечающим за запуск и остановку процессов служб, а также за взаимодействие с ними.

Программы служб фактически являются Windows-образами, которые вызывают специальные Windows-функции для взаимодействия с диспетчером управления службами, чтобы выполнить такие действия, как регистрация успешного запуска службы, ответы на запросы о ее состоянии, или приостановки или полной остановки службы. Службы определены в реестре в разделе HKLM\SYSTEM\CurrentControlSet\Services.

Следует иметь в виду, что у служб три имени: имя процесса, который виден запущенным в системе, внутреннее имя в реестре и имя, показываемое в средстве администрирования Службы. Отображаемое имя есть не у всех служб.

Если у службы нет отображаемого имени, то показывается ее внутреннее имя.

В Windows службы могут также иметь поле описания, дающее более глубокое представление о том, чем занимается та или иная служба.

Чтобы сопоставить процесс службы со службой, содержащейся в этом процессе, используется команда tlist /s или команда tasklist /svc. Следует заметить, что между процессами служб и запущенными службами однозначное соответствие бывает не всегда, потому что некоторые службы используют процесс совместно с другими службами. Код типа, имеющийся в реестре, показывает, запущена ли служба в своем собственный процессе или делит процесс с остальными службами образа.

Некоторые компоненты Windows реализованы в виде служб. К ним относятся Диспетчер печати, Журнал событий, Планировщик заданий и различные сетевые компоненты.

Эксперимент: Вывод списка установленных служб.

Для вывода списка установленных служб выберите в окне "Панель управления" (Control Panel) пункт "Администрирование" (Administrative Tools), а затем выберите пункт "Службы" (Services). В результате должна быть выведена информация, похожая на следующую:

Чтобы увидеть детализированные свойства службы, щелкните на имени службы правой кнопкой мыши и выберите пункт "Свойства" (Properties). Например, на следующем рисунке показаны свойства службы под названием Диспетчер печати (чье имя выделено на предыдущем рисунке).

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

Exit mobile version