Примечание
Диспетчер 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).
В данной главе мы рассмотрим параметры реестра , определяющие общие сведения о службах, а далее в этой книге будут приведены параметры настройки конкретных служб.
• Group – этот параметр строкового типа определяет группу служб или драйверов, к которой относится данная служба. От названия группы зависит время, когда данная служба будет запущена. Дело в том, что все группы служб запускаются последовательно: сначала службы, принадлежащие одной группе, потом службы, принадлежащие другой группе, и т. д. Если же служба не принадлежит ни одной из групп, то она запускается одной из самых последних.
Сама последовательность запуска групп служб описана в параметре типа REG_MULTI_SZ List, расположенном в ветви реестра HKEY_LOCAL_MACHINE\ SYSTEM\CurrentControlSet\Control\ServiceGroupOrder.