Недокументированные и малоизвестные возможности Windows XP
Шрифт:
Теперь рассмотрим блок INFфайла для регистрации службы. Он может включать в себя следующие ключевые слова.
■ DisplayName — имя службы, отображаемое в оснастке services.msc.
■ Description — описание службы, отображаемое в оснастке services.msc.
■ ServiceType — тип службы. Значение этого параметра соответствует уже рассмотренному значению параметра реестра Type (см. часть 2).
■ StartType — режим запуска службы. Значение этого параметра соответствует уже рассмотренному значению параметра реестра Start.
■ ErrorControl — действие при возникновении ошибки при
■ ServiceBinary — путь и имя файла службы. Значение данного ключевого слова заносится в уже рассмотренный параметр ImagePath реестра.
■ Dependencies — определяет службы, необходимые для работы данной службы. Эти значения заносятся в параметр реестра DependOnService.
■ LoadOrderGroup — определяет группу, к которой принадлежит данная служба. Эти значения заносятся в параметр реестра Group.
Удаление службы
Для удаления службы предназначено ключевое слово DelService, которое также указывается в блоке, названном в формате [«блок удаления».Services]. Удаление службы выполняется намного проще — просто указывается имя службы, которую нужно удалить (название раздела реестра, в котором служба описана).
В листинге 15.6 ключевое слово DelService указано в блоке [Uninstall.Services], так как именно блок [Uninstall] используется в примере при вызове INF-файла для удаления службы с помощью команды rundll32.exe.
Копирование файлов
Копирование в INF-файлах реализовано наиболее сложно. Для его выполнения необходимо не только использовать ключевое слово CopyFiles, но и, кроме того, создать три отдельных блока INF-файла: DestinationDirs, SourceDisksFiles и SourceDisksNames. Рассмотрим простой пример.
В этом примере для описания копируемых файлов используется блок INF-файла [INFcopy]. Ссылка на него содержится в ключевом слове CopyFiles. В этом блоке находятся только названия файлов, которые должны быть скопированы (если файлов несколько, каждый из них пишется в отдельной строке).
Блок [DestinationDirs] определяет каталоги, в которые должны копироваться файлы, описанные в отдельных блоках INF-файла, предназначенных для описания копируемых файлов. При этом все файлы, описанные в одном блоке INF-файла, должны копироваться только в один каталог (то есть если бы в нашем блоке [INFcopy] описывалось два файла, например 1.INF и 2.INF, то они оба должны были бы скопироваться в один каталог). Формат определения каталога, в который будут копироваться файлы, следующий:
Числовой номер каталога представляет собой число, идентифицирующее одну из системных папок. Рассмотрим некоторые из этих чисел, а также каталоги, которые они определяют.
■ 10 — %systemroot%.
■ 11 — %systemroot%\system32.
■ 17 — %systemroot%\Inf.
■ 53 — %userprofile%.
■ 54 — %systemdrive%.
■ 1 — говорит о том, что необходимо использовать абсолютный путь, который должен быть записан после числового номера (через запятую). Абсолютным называется путь, который не начинается с числового номера каталога. Например, числовым является путь d:\test\1.
С помощью блока [SourceDisksFiles] осуществляется присваивание каждому копируемому файлу уникального идентификатора, он будет определять в блоке [SourceDisksNames] название диска, с которого копируется файл. Формат строк этого блока следующий:
Блок [SourceDisksNames] определяет диски, на которых находятся копируемые файлы. Формат строк этого блока таков:
Метка диска отображается в диалоге копирования файлов. Эта метка также отображается в диалоге, выводимом, если система не может найти указанные для копирования файлы. В этом случае система попросит вас вставить диск, название которого как раз и указано в блоке [SourceDisksNames].
Удаление файлов
Удаление файлов напоминает их копирование, поэтому рассмотрим этот процесс лишь поверхностно — в подсказках к листингу 15.8. Для определения блоков, содержащих описания удаляемых файлов, используется ключевое слово DelFiles.