Создание службы

We use cookies. Read the Privacy and Cookie Policy

Создание службы

Еще одной оригинальной возможностью, которой обладают INF-файлы, является упрощенное создание служб на компьютере. Для этого применяется не только ключевое слово AddService, но и специальный стандартный блок INF-файла [DefaultInstall.Services] (то есть к блоку по умолчанию добавляется строка .Services). При этом следует сказать, что этот блок не заменяет стандартный, а дополняет его. Иными словами, если в INF-файле будет два блока, то сначала выполнятся ключевые слова блока [DefaultInstall], а потом блока [DefaultInstall.Services].

Так как вам уже известно, как хранятся сведения о службе в реестре, то будет не сложно понять пример создания службы. По этой причине сначала посмотрим на листинг 15.5, который содержит часть INF-файла, регистрирующего в системе службу Восстановление системы.

Листинг 15.5. Пример регистрации службы Восстановление системы

[version]

Signature="$CHICAGO$"

[DefaultInstall.Services]

AddService=sr,,SRFlt_service,SRFlt_event

[SRFlt_service]

DisplayName = "Имяслужбы"

ServiceType = 2

StartType = 0

ErrorControl = 1

ServiceBinary = %12%sr.sys

LoadOrderGroup = "FSFilter System Recovery"

[SRFlt_event]

AddReg=SRFlt_event_addreg

DelReg=SRFlt_event_delreg

Ключевое слово AddService, в отличие от большинства других, содержит не только название блока INFфайла, описывающего службу, но и некоторые другие сведения. Формат этого ключевого слова следующий:

«название службы»,«тип службы», «блок INF-файла»

? Название службы — определяет название раздела в ветви системного реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices, в который будет заноситься информация о службе. Как известно, название этого раздела является и названием службы.

? Тип службы — указывает, является ли данная служба самостоятельной. Может принимать значения 0x01, 0x2 и 0x3.

? Блок INF-файла — определяет один или несколько блоков INFфайла (в этом случае они пишутся через запятую), в которых определены сведения о службе. В листинге 15.5 первый блок содержит информацию о службе, а второй блок регистрирует возможность записи в системные журналы Windows (оснастка Просмотр событий).

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

? DisplayName — имя службы, отображаемое в оснастке services.msc.

? Description — описание службы, отображаемое в оснастке services.msc.

? ServiceType — тип службы. Значение этого параметра соответствует уже рассмотренному значению параметра реестра Type (см. часть 2).

? StartType — режим запуска службы. Значение этого параметра соответствует уже рассмотренному значению параметра реестра Start.

? ErrorControl — действие при возникновении ошибки при запуске службы. Значение этого параметра соответствует уже рассмотренному значению параметра реестра ErrorControl.

? ServiceBinary — путь и имя файла службы. Значение данного ключевого слова заносится в уже рассмотренный параметр ImagePath реестра. 

? Dependencies — определяет службы, необходимые для работы данной службы. Эти значения заносятся в параметр реестра DependOnService.

? LoadOrderGroup — определяет группу, к которой принадлежит данная служба. Эти значения заносятся в параметр реестра Group.