Главная страницаОбратная связьКарта сайта

INF- и REG-файлы


INF-файлы (Setup Information Files) предназначены для создания сценариев инсталляций. Обычно INF-файлы используются для установки драйверов — устанавливать с их помощью приложения также допустимо, но неудобно.

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

 Формат INF-файла

Формат INF-файла похож на формат INI-файла. В INF-файле, как и в INI-файле, есть разделы (или секции), а каждый раздел содержит элементы, обычно имеющие видИмя=Значение.

Создать lNF-файл можно в любом текстовом редакторе — в частности, для этих целей идеально подходит Блокнот. Чтобы не создавать INF-файл каждый раз с чистого листа, вы можете создать шаблон, содержащий обязательные секции INF-файла. В листинге 21.1 приведен простейший шаблон INF-файла для внесения изменений в реестр.

Примечание

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

1 Листинг 21.1. Простейший шаблон INF-файла

[Version] Signature=

[Defaultinstall]

; Действия при установке файла

AddReg=Add

[DefaultUninstall]

; действия при удалении

DelReg=Del

[Add]

; добавляем данные в реестр

[Del]

; удаляем данные из реестра

Секция [version] является обязательной. Изменять ее нельзя. Вторая секция обычно называется [Defaultinstall]. Можно изменить имя этой секции, но лучше этого не делать. Директивы AddReg и DelReg задают имена секций, в которых находятся разделы и параметры, которые нужно добавить или удалить из реестра соответственно.

Директивы    AddReg    и    DelReg    могут    располагаться    как    в    секции

[Defaultinstall], так И В   [DefaultUninstall], Причем в одной и той же

секции может быть указано несколько директив AddReg и DelReg:

[Defaultinstall]

;  Действия при установке файла

AddReg=Addl

•AddReg=Add2

AddReg=Add3

DelReg=Del

[DefaultUninstall]

; действия при удалении

DelReg=Dell

DelReg=Del2

DelReg=Del3

AddReg=Del

Для сокращения длины INF-файла можно в одной директиве AddReg или DelReg указать несколько секций (через запятую):

[Defaultlnstall]

; Действия при установке файла

AddReg=Addl,Add2,Add3

DelReg=Del

[DefaultUninstall]

; действия при удалении

DelReg=Dell,Del2,Del3

AddReg=Del

Примечание

Названия секций (в приведенном выше примере — [Addl],  [Add2] и т. д.) должны быть уникальными в пределах INF-файла.

Добавление новых разделов и параметра реестра

Теперь поговорим о том, как задаются разделы и параметры реестра в секциях INF-файла. Общий формат такой:

корневой раздел,    [подраздел],    [параметр],    [флаги],    [данные]

Корневой раздел нужно указывать в любом случае. Допускается использование сокращенных имен: HKCU, HKLM, HKCR, HKU, НКСС. Подраздел можно не указывать — в этом случае все действия будут относиться к корневому разделу. Если вы не указываете подраздел, не забудьте поставить запятую, относящуюся к подразделу: корневой раздел,   ,    [параметр],    [флаги],    [данные]

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

С помощью флагов вы можете задать тип создаваемого параметра и определить дополнительные атрибуты операции добавления или изменения параметра. Наиболее часто используемые флаги приведены в табл. 21.1.

Таблица 21.1. Некоторые флаги операций (при добавлении/изменении параметров)



Примечание

Флаги, выделенные курсивом, можно объединять с другими флагами с помощью битового OR (или). Эту операцию можно произвести в калькуляторе, переведенном в инженерный режим.

После флагов должно быть указано значение параметра. Если параметр не существует, то он будет создан, а если существует — перезаписан. Если параметр имеет тип REG_MULTI_SZ и установлен флаг 0x00010008 (REG_MULT1_SZ + 0x00000008), то список строк будет добавлен к уже существующему.

Если значение параметра не указано, то параметр будет создан без указания значения.

Рассмотрим несколько примеров:

[Add]

; Создаем параметр Active типа REG_DWORD и присваиваем значение 1

HKCU,Software\Company\Program,Active, 0x10001,1

; Создаем параметр Str типа REG_SZ и присваиваем значение Test String

HKCU,Software\Company\Program,Str, ,Test String

; Устанавливаем значение по умолчанию

HKCU,Software\Company\Program,,,По умолчанию

 Удаление разделов и параметров

Синтаксис описания разделов реестра такой же, как и в предыдущем случае: Корневой раздел,    [подраздел],    [параметр],    [флаги],    [значение]

Корневой раздел — это основной раздел, содержащий раздел реестра или параметр, который нужно удалить. Подраздел — это дочерний раздел, который нужно удалить, или же подраздел, содержащий параметр, который вы хотите удалить. Параметр — это имя параметра, который нужно удалить.

Как и в случае с добавлением/изменением значений, можно указать дополнительные флаги, представленные в табл. 2] .2.

Таблица 21.2. Флаги для удаления разделов/параметров
 
Флаг   
Операция

0x00002000   
Удалить весь подраздел

0x00018002   
Если параметр имеет тип REG_MULTI_SZ, то удаляются все строки, соответствующие строке, указанной в качестве значения

Значение (см. выше) используется, только если установлен флаг 0x00018002 и тип параметра равен REG_MULT1_SZ. В этом случае указанное значение будет удалено.

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

Листинг 21.2. Пример удаления


[Version]

Signature=SCHICAGO$

[Defaultlnstall]

DelReg=Del

[Del]

; удаляем параметр Str из Software\Company\Program

HKCU,Software\Company\Program,Str

; удаляем строку Text из списка строк

HKCU, Software\Company\Program,StringList,0x00018002,Text

/удаляем весь раздел Software\Company\Program

HKCU, Software\Company\Program

Установка INF-файла

Для установки INF-файла нужно щелкнуть по нему правой кнопкой мыши и выбрать из контекстного меню команду Установить (рис. 21.1).

- SXSTW (С:)



Рис. 21.1. Установка INF-файла

 REG-файлы

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

На рис. 21.2 изображен примерный вид раздела реестра, который я попытаюсь экспортировать в REG-файл с помощью команды Файл, Экспорт.



Рис. 21.2. Примерный раздел реестра В результате экспорта получился REG-файл, приведенный в листинге 21.3.

Листинг 21.3. REG-файл

Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Company\Program] Str=Hello world! Counter=dword:00000000 Binary=hex:12,20

Название разделов реестра в REG-файле, так же как и секции в INF-файлах, записываются в квадратных скобках.

Строковые значения (REG_SZ) заключаются в кавычки; перед значениями типа REG_DWORD указывается ключевое слово dword:, а перед шестнадца-теричными значениями — hex.

Некоторые специальные символы, например, обратный слэш, цитируются с помощью обратной косой черты (\), например:

C:\\Windows\\system32

У REG-файлов есть один недостаток: REG-файл, сгенерированный для вашего реестра, может использоваться только для экспортированных в него ключей и параметров. А как с его помощью удалить разделы и параметры? Для этого вам придется писать REG-файл вручную.

Для удаления целого раздела реестра нужно перед именем раздела поставить знак -, например:

[-HKEY_CURRENT_USER\Software\Company\Program]

Если вы хотите удалить параметр, то минус нужно поставить перед его значением: имя=-значение

Вот пример REG-файла для удаления раздела HKEY_CURRENT_USER\ Software\Company\Program:

Windows Registry Editor Version 5.00 [-HKEY_CURRENT_USER\Software\Company\Program]

Напомню, что создать REG-файл можно в любом текстовом редакторе, например, в Блокноте. При создании REG-файла в Блокноте убедитесь, что файл сохранен с расширением .reg, а не .reg.txt, иначе система будет считать его обычным текстовым файлом.

Для применения REG-файла нужно дважды щелкнуть по его имени в окне Проводника, при этом система спросит вас, хотите ли вы применить REG-файл. Вам нужно согласиться.



Обсудить статью на форуме


Если прочитаная статья из нашей обширной энциклопедия компьютера - "INF- и REG-файлы", оказалась полезной или интересной, Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по статье через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2017 Дискета.info