Глава 6 Стандартные службы Windows Vista
• Основные сведения о службах
• Работа со службами с помощью программ операционной системы
• Службы Windows Vista
В составе операционной системы Windows Vista появилось множество новых служб, которые предоставляют различные возможности и, конечно, влияют на производительность работы компьютера. В этой главе мы рассмотрим назначение всех доступных служб операционной системы Windows Vista, а также попробуем разобраться, как их работа влияет на производительность компьютера, нужны ли они вообще. Мы рассмотрим основные параметры реестра , предназначенные для настройки тех или иных служб, но сначала разберемся, что вообще представляют собой службы и как хранится информация о них в реестре.
6.1. Основные сведения о службах
Служба представляет собой программу, как правило, работающую в фоновом режиме и расширяющую возможности операционной системы. При этом все службы состоят из трех компонентов: собственно файла службы, программы управления службой (SCP) и диспетчера управления службами (SCM).
Файл службы отличается от обычной программы только тем, что в нем реализованы дополнительные функции взаимодействия с SCM.
Программа управления службой (SCP) предназначена для запуска, остановки и настройки службы (для взаимодействия с SCM). Каждая служба может поставляться со своей собственной программой управления, однако чаще всего службы используют стандартный SCP операционной системы Windows. Например, SCP является оснастка операционной системы services.msc или программа командной строки sc.ехе.
Диспетчер управления службами SCM реализован в виде файла services.ехе и содержит сведения обо всех зарегистрированных в операционной системе службах. Он запускается процессом Winlogon.exe еще до запуска графического интерфейса (окно входа в систему).
Примечание
Диспетчер SCM взаимодействует с SCP с помощью именованного канала \Pipe\ Ntsvcs. SCM при запуске очередной службы также создает канал \Pipe\Net\ NtControl-PipeX, после чего ждет подключения запускаемой службы к этому каналу.
Если по истечении определенного интервала (по умолчанию 30 секунд) служба так и не подключилась к каналу, то SCM завершает работу службы. Интервал ожидания подключения службы к каналу определяется параметром REG_DWORD-типа ServicesPipeTimeout, расположенным в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\ CurrentControlSet\Control.
Если же служба подключилась к каналу, то SCM передает по каналу команду окончательного запуска службы.
Сведения обо всех службах и драйверах, установленных в системе, хранятся в подразделах ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services. Эта ветвь является постоянным представлением базы служб SCM.
Каждая установленная служба или драйвер (независимо от того, работает он в данный момент или нет) имеет свой собственный подраздел в данной ветви реестра. Этот подраздел создается в тот момент, когда служба регистрируется с помощью функции CreateService из библиотеки advapi32.dll.
Параметры, описывающие службы
Подраздел службы хранит общие сведения о службе, например имя и описание службы, ее исполняемый файл, способ запуска и т. д., а также настройки службы, если такие имеются. Общие сведения о работе служб хранятся в одних и тех же параметрах (с одинаковыми названиями), тогда как настройки службы могут описываться любыми параметрами, названия которых придумывают сами создатели службы. Кроме того, общие сведения о службах всегда располагаются непосредственно в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\<название службы>, тогда как параметры настройки службы могут находиться в любом подразделе данной ветви реестра (но чаще всего находятся в подразделе Parameters).
В данной главе мы рассмотрим параметры реестра , определяющие общие сведения о службах, а далее в этой книге будут приведены параметры настройки конкретных служб.