Роман Клименко - Недокументированные и малоизвестные возможности Windows XP
- Название:Недокументированные и малоизвестные возможности Windows XP
- Автор:
- Жанр:
- Издательство:Питер
- Год:2006
- ISBN:5-469-01562-9
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Роман Клименко - Недокументированные и малоизвестные возможности Windows XP краткое содержание
Книга содержит подробные сведения о таких недокументированных или малоизвестных возможностях Windows XP, как принципы работы с программами rundll32.exe и regsvr32.exe, написание скриптов сервера сценариев Windows и создание INF-файлов. В ней приведено описание оснасток, изложены принципы работы с консолью управления mmc.exe и параметрами реестра, которые изменяются с ее помощью. Кроме того, рассмотрено большое количество средств, позволяющих выполнить тонкую настройку Windows XP.
Эта книга предназначена для опытных пользователей и администраторов, которым интересно узнать о нестандартных возможностях Windows. Тем более что довольно часто эти возможности позволяют обойти ограничения на те или иные функции Windows, установленные администратором. Издание также может быть интересно и обычным пользователям
Недокументированные и малоизвестные возможности Windows XP - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Так как вам уже известно, как хранятся сведения о службе в реестре, то будет не сложно понять пример создания службы. По этой причине сначала посмотрим на листинг 15.5, который содержит часть INF-файла, регистрирующего в системе службу Восстановление системы.
[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_MACHINE\SYSTEM\CurrentControlSet\Services, в который будет заноситься информация о службе. Как известно, название этого раздела является и названием службы.
■ Тип службы — указывает, является ли данная служба самостоятельной. Может принимать значения 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.
Удаление службы
Для удаления службы предназначено ключевое слово DelService, которое также указывается в блоке, названном в формате [«блок удаления».Services]. Удаление службы выполняется намного проще — просто указывается имя службы, которую нужно удалить (название раздела реестра, в котором служба описана).
[version]
Signature="$CHICAGO$"
[Uninstall.Services]
DelService=sr
В листинге 15.6 ключевое слово DelService указано в блоке [Uninstall.Services], так как именно блок [Uninstall] используется в примере при вызове INF-файла для удаления службы с помощью команды rundll32.exe.
Копирование файлов
Копирование в INF-файлах реализовано наиболее сложно. Для его выполнения необходимо не только использовать ключевое слово CopyFiles, но и, кроме того, создать три отдельных блока INF-файла: DestinationDirs, SourceDisksFiles и SourceDisksNames. Рассмотрим простой пример.
[version]
Signature = $CHICAGO$
[DefaultInstall]
CopyFiles = INFcopy
[INFcopy]
1.INF
[DestinationDirs]
INFcopy = 17
[SourceDisksFiles]
1.INF = 55
[SourceDisksNames]
55 = "имя диска", , 1
В этом примере для описания копируемых файлов используется блок INF-файла [INFcopy]. Ссылка на него содержится в ключевом слове CopyFiles. В этом блоке находятся только названия файлов, которые должны быть скопированы (если файлов несколько, каждый из них пишется в отдельной строке). Кроме блока [INFcopy], файл обязательно должен хранить и три других стандартных блока INF-файлов.
Блок [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.
[version]
Signature = $CHICAGO$
;данный раздел будет вызываться с помощьюкоманды rundll32
[DefaultUninstall]
DelFiles = INFdel
;мы будем удалять файл vfolder.INF
[INFdel]
vfolder.INF
;теперь данный блок указывает не каталог, в который копируются файлы,
Интервал:
Закладка: