Категории
Самые читаемые
PochitayKnigi » Компьютеры и Интернет » Программное обеспечение » Недокументированные и малоизвестные возможности Windows XP - Роман Клименко

Недокументированные и малоизвестные возможности Windows XP - Роман Клименко

Читать онлайн Недокументированные и малоизвестные возможности Windows XP - Роман Клименко

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 76 77 78 79 80 81 82 83 84 ... 100
Перейти на страницу:

Глава 15

INF-файлы

Хотелось бы в этой главе описать некоторые возможности INF-файлов. Здесь не будет полностью рассмотрен язык INF-файлов и способы написания на нем сценариев, но тем не менее попробуем понять, как с помощью INF-файлов можно выполнять копирование и удаление файлов, создание и удаление параметров реестра, а также рассмотрим некоторые интересные возможности INF-файлов.

Основные сведения

INF-файлы предназначены для описания начального процесса установки новой программы или оборудования. Каждый INF-файл должен начинаться с заголовка. Этот заголовок определяет версию INF-файла, а также версию операционной системы, для которой этот INF-файл написан. От версии информационного файла (INF-файла) зависят те возможности, которые он поддерживает. Существует две версии INF-файлов — обычные и расширенные. В главе 1 уже рассматривались способы вызова обычных и расширенных INF-файлов. При этом расширенные INF-файлы поддерживают следующие новые возможности (это не все возможности, только основные): выполнение различных программ до или после выполнения INF-файла, архивирование изменяемых значений параметров реестра, а также вывод сообщений перед выполнением INF-файлов или после него.

ПРИМЕЧАНИЕ

Необходимость изучения INF-файлов во многом оправдана. Конечно, сейчас INF-файлы заменили пакетами установщика Windows и другими способами описания начальной установки программ. Тем не менее они обладают несколькими интересными возможностями, которые будут рассмотрены далее и которые довольно трудно выполнить без использования INF-файлов. С помощью INF-файлов можно также работать с реестром, даже когда возможность работы с программой regedit.exe и REG-файлами была отключена с помощью DWORD-параметра DisableRegistryTools, расположенного в ветви реестра HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciessystem. И не следует забывать, что INF-файлы могут использоваться системными процессами, то есть на их основе можно выполнить взлом операционной системы. 

Обычные INF-файлы

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

[Version]

Signature="$WINDOWS NT$"

При этом после ключевого слова Signature идет описание версии операционной системы, которая будет поддерживать такие INF-файлы. Если после этого ключевого слова идет слово $WINDOWS NT$, то данный файл написан для операционных систем семейства NT и работать с ним в операционных системах семейства Windows 9x нельзя. Если же после ключевого слова идет слово $CHICAGO$, то данный INF-файл был написан для операционных систем семейства Windows 9x. При этом работать с этим файлом можно будет и в операционных системах семейства NT.

После заголовка должен идти начальный блок, с которого будет устанавливаться данный INF-файл. Стало традицией, что этот блок должен иметь название DefaultInstall. К тому же блок именно с таким заголовком ищет система при установке INF-файла с помощью команды Установить его контекстного меню. Если же предполагается, что создаваемый INF-файл не должен вызываться с помощью контекстного меню (а только с использованием команды rundll32.exe setupapi.dll, InstallHINFSection), то начальный блок можно указать любой.

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

Создание ветвей реестра

Например, в начальном блоке может находиться ключевое слово AddReg, указывающее на блоки INF-файла, описывающие добавляемые или изменяемые параметры и ветви реестра. Рассмотрим формат этого ключевого слова на примере листинга 15.1. В данном листинге приведен пример редактирования DWORD-параметра AutoRun из ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesCdrom. В примере этому параметру присваивается значение 0, то есть отключается возможность автоматического запуска дисков. 

Листинг 15.1. Редактирование параметров реестра

[version]

Signature="$CHICAGO$"

[DefaultInstall]

AddReg=AR_off

[AR_off]

HKLM, "SYSTEMCurrentControlSetServicesCdrom","Autorun",0x10001,0

Как видно из листинга 15.1, в блоке для редактирования ветвей реестра (в ключевом слове AddReg можно через запятую указать несколько блоков для редактирования ветвей реестра) описываются сами ветви реестра и параметры, в них изменяемые. Формат их описания таков:

«корневой раздел», «ветвь реестра», «параметр», «флаг типа параметра», «новое значение параметра» 

Рассмотрим этот формат подробнее.

■ Корневой раздел — здесь содержится ключевое слово, определяющее корневой раздел реестра, в котором расположен изменяемый параметр. Возможны следующие значения:

 • HKCU — определяет корневой раздел HKEY_CURRENT_USER;

 • HKLM — HKEY_LOCAL_MACHINE;

 • HKU — HKEY_USERS;

 • HKCR — HKEY_CLASSES_ROOT;

 • HKCC — HKEY_CURRENT_CONFIG.

■ Ветвь реестра — определяет остальной путь к ветви реестра, включающей в себя изменяемый параметр. Если ветвь реестра содержит пробелы, то ее нужно взять в кавычки.

■ Параметр — указывает изменяемый параметр реестра. Если название параметра содержит пробелы, то его нужно взять в кавычки. Если название параметра указано не будет, то будет изменено значение параметра (По умолчанию).

■ Флаг — определяет как тип параметра, так и в некоторых случаях дополнительные сведения о том, что же нужно делать с аналогичным параметром в реестре, если он уже существует. Флаг представляет собой битовую маску. Рассмотрим некоторые состояния этой битовой маски.

 • 0x00000000 — тип REG_SZ.

 • 0x00000001 — REG_BINARY.

 • 0x00010000 — REG_MULTI_SZ.

 • 0x00020000 — REG_EXPAND_SZ.

 • 0x00010001 — DWORD.

 • 0x00020001 — NONE.

 • 0x00000002 — если изменяемый параметр уже существует в реестре, то изменять его значение запрещено.

 • 0x00000004 — удалить раздел или параметр из реестра. Иными словами, в INF-файле можно обойтись даже без специального ключевого слова для описания блока удаления, который будет рассмотрен далее. Удалить параметр можно и с помощью блока редактирования параметров.

 • 0x00000008 — только для параметров REG_MULTI_SZ-типа. Указанное в строке редактирования параметра значение не заменяет существующее значение, а добавляется к существующему значению параметра.

 •  0x00000010 — создать раздел, но игнорировать создание или редактирование указанного в строке параметра. Вообще, если посмотреть на возможные значения данного флага, то можно подумать, что Microsoft намеревается создать целый язык сценария с условными значениями и переменными для INF-файла. Иначе зачем вообще нужны два только что рассмотренных значения флага, если аналогичные действия можно выполнить и без их использования?

 • 0x00000020 — изменить значение параметра, только если данный параметр уже существует в реестре.

■ Значение параметра — определяет новое значение параметра.

Теперь рассмотрим пример INF-файла, добавляющего в реестр значения параметров. Пример, отображенный в листинге 15.2, является частью стандартного INF-файла Windows XP, предназначенного для настройки отключения автозапуска дисков для разных типов приводов компакт-дисков. В примере параметру Autorun присваивается значение только в том случае, если он не существует в реестре. А значение параметра AutoRunAlwaysDisable, имеющего тип REG_MULTI_SZ, формируется в несколько приемов, чтобы обеспечить хранение значений параметра в разных строках.

Листинг 15.2. Пример использования флагов для редактирования параметров реестра

[version]

Signature="$CHICAGO$"

[DefaultInstall]

AddReg=autorun_addreg

[autorun_addreg]

HKLM,"SystemCurrentControlSetServicescdrom","AutoRun",0x00010003,1

HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "NEC MBR-7 "

HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "NEC MBR-7.4 "

HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "PIONEER CHANGR DRM-1804X"

HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "PIONEER CD-ROM DRM-6324X"

HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "PIONEER CD-ROM DRM-624X "

HKLM,"SystemCurrentControlSetServicescdrom","AutoRunAlwaysDisable", 0x00010008, "TORiSAN CD-ROM CDR_C36"

Удаление ветвей реестра

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

1 ... 76 77 78 79 80 81 82 83 84 ... 100
Перейти на страницу:
Тут вы можете бесплатно читать книгу Недокументированные и малоизвестные возможности Windows XP - Роман Клименко.
Комментарии