Настройки служб
Настройки служб
После рассмотрения назначения разделов формата ControlSetNNN вы знаете, что они предназначены для хранения настроек запускаемых системой служб. Но как эти настройки хранятся в реестре? Именно этому вопросу и посвящен данный раздел.
Все настройки запуска служб хранятся в ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices. Она содержит список разделов, каждый из которых определяет описания одной службы или сервиса. Названия данных разделов, в принципе, не имеют значения (но если для службы не существует параметра DisplayName, то для ее идентификации будет использоваться название раздела, в котором она описывается). Значение имеют те параметры, которые описаны в соответствующем разделе. К таким параметрам можно отнести приведенные ниже.
? Group — параметр имеет тип REG_SZ и определяет группу, к которой относится служба. Именно от группы зависит, в какой момент будет запущена служба — сначала запускаются все службы одной группы, потом все службы другой и т.д. Саму же последовательность, в которой запускаются группы служб, можно просмотреть в REG_MULTI_SZ-параметре List, расположенном в ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlServiceGroupOrder.
? DependOnGroup — этот параметр REG_MULTI_SZ-типа определяет группы, которые должны быть запущены перед запуском данной службы. В контексте оснастки services.msc, которая описывает все службы, установленные на компьютере, данный параметр определяет содержание вкладки Зависимости диалога Свойства для данной службы.
? DependOnService — параметр REG_MULTI_SZ-типа, определяет сервисы, которые должны быть запущены перед запуском данной службы. Значения этого параметра отображаются на вкладке Зависимости диалога Свойства, вызываемого двойным щелчком левой кнопкой мыши на строке, определяющей данную службу в оснастке services.msc.
? DisplayName — этот параметр строкового типа определяет строку названия службы, которая как раз и будет идентифицировать службу в оснастке services.msc (данная строка будет отображаться в поле Имя оснастки services.msc).
? Description — параметр строкового типа, определяет строку описания для соответствующей службы. Строка будет отображаться в поле Описание диалога Свойства для данной службы.
? ObjectName — этот параметр строкового типа определяет учетную запись, с правами которой будет запускаться служба. Если его значение равно LocalSystem, то вход будет выполняться с правами данной учетной записи (эта запись пришла на смену записи System, определяющей права системы, и содержит меньше прав, чем сама учетная запись System). Если же значение этого параметра равно NT AuthorityNetworkService, то вход будет выполнен от имени сетевой службы (аналогично учетной записи LocalSystem, данная учетная запись имеет меньше прав, чем учетная запись System). Если же вам необходимо предоставить службе вход от имени учетной записи определенного пользователя данного компьютера, то параметру ObjectName в качестве значения нужно присвоить строку формата .логин пользователя.
? ErrorControl — параметр DWORD-типа, определяет поведение системы при возникновении ошибок в работе службы и может принимать такие значения:
• 0 — игнорировать ошибку;
• 1 — предупреждать пользователя об ошибке;
• 2 — перезагрузить компьютер.
? ImagePath — этот параметр строкового типа определяет путь к файлу службы, который и будет запускаться системой. В оснастке services.msc параметр определяет содержимое поля Исполняемый файл диалога Свойства для соответствующей службы (это поле позволяет лишь просмотреть путь к файлу службы, но не отредактировать его).
? Start — параметр DWORD-типа, определяет момент загрузки системы, в который будет запущена данная служба. Он может принимать следующие значения:
• 0 — служба будет запускаться загрузчиком операционной системы перед началом этапа инициализации ядра;
• 1 — данная служба будет запускаться при инициализации ядра (подсистемой ввода/вывода);
• 2 — служба будет запускаться диспетчером сервисов (smss.exe) при входе пользователя в систему;
• 3 — данная служба запускается вручную в тот момент, когда она понадобится какой-нибудь программе;
• 4 — служба не будет запускаться никогда.
? Type — этот параметр DWORD-типа указывает на то, к какому типу относится служба, и может принимать следующие значения:
• 1 — служба определяет устройства уровня ядра;
• 2 — служба определяет драйвер файловой системы;
• 4 — служба является аргументом для адаптера;
• 8 — служба относится к службам файловой системы;
• 10 — служба является программой, запускающей свой процесс;
• 20 — служба является программой, запускающей общий процесс;
• 100 — если данная битовая маска присутствует в параметре Туре, то система будет разрешать соответствующей службе взаимодействие с Рабочим столом (иначе служба не сможет вывести диалоговое окно, окно сообщения или свое окно).
Для примера попробуем зарегистрировать в системе свою собственную службу. Для этого достаточно только создать свой раздел в ветви HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices, а в этом разделе создать такие параметры, как ImagePath, DisplayName, Description, Group. Результат можно видеть на рис. 8.1.
Рис. 8.1. Создание своей службы