Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Всё о работе в Интернет" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Секреты Windows: статьи о реестре, rundll32.exe, программах Недокументированные возможности Windows XP. INF. Часть 3
Другие наши рассылки: Новости нашего сайта:
Продолжение, начало в выпусках: 1 2 В конец записи
оцените: 1 2 3 4 5 Книга "Недокументированные возможности Windows XP. Библиотека пользователя", Глава 4. Другие возможности Windows XP. Часть 6. Inf-файлы, Дополнительные возможности. Выше мы рассмотрели лишь основы работы с inf-файлами. Кроме приведенных ключевых слов inf-файлы поддерживают многие другие, но если начать их описывать, тогда на это понадобится отдельная книга. Поэтому давайте закончим на этом рассказ об ключевых словах inf-файлов. Теперь давайте рассмотрим несколько примеров не совсем стандартного использования inf-файлов. без описания этих примеров рассказ о возможностях inf-файлов был бы не полон. Работа с диалогом Установка/Удаление программОдной из интересных возможностей inf-файлов является возможность их использования как для добавления команды в диалог УСТАНОВКА/УДАЛЕНИЕ ПРОГРАММ, так и для выполнения процесса деинсталляции при использовании диалога УСТАНОВКА/УДАЛЕНИЕ ПРОГРАММ. Давайте рассмотрим простой пример использования inf-файлов для создания так называемого зацикленного элемента диалога УСТАНОВКА/УДАЛЕНИЕ ПРОГРАММ, используемого для включения и отключения возможности автоматического запуска дисков. Принцип работы приведенного ниже скрипта прост. При первом своем вызове он копирует себя в папку %systemroot%\inf, отключает автоматический запуск дисков, а также добавляет возможность включения автоматического запуска дисков в диалог УСТАНОВКА/УДАЛЕНИЕ ПРОГРАММ. После удаления данного inf-файла с помощью диалога УСТАНОВКА/УДАЛЕНИЕ ПРОГРАММ происходит включение автоматического запуска дисков, а также создание в диалоге УСТАНОВКА/УДАЛЕНИЕ ПРОГРАММ новой строки, с помощью которой можно опять отключить автоматический запуск диска. То есть, создается постоянный цикл. Конечно, пример с изменением значения одного параметра довольно спорен, ведь намного проще было бы добавить свой флажок в один из стандартных диалогов Windows, поддерживающих добавление в свои списки новых элементов. Но если необходимо при установке параметра также выполнять какие-либо команды, или необходимо модифицировать сразу несколько параметров (например, создать несколько разновидностей настройки оболочки Windows, а потом переходить между ними), тогда данный способ использования inf-файлов может быть незаменим. Листинг 4.12. Создания цикла в диалоге Установка/Удаление программ [version] Signature = $CHICAGO$ [DefaultInstall] AddReg = AutoRunOff, InstallInf CopyFiles = infcopy ;ниже мы используем переменную %PATH% для указания изменяемой ветви реестра. ;Переменная, это специальная последовательность символов, которая при ;установке inf-файла будет преобразовываться в строку, определенную для нее ;в стандартном блоке [Strings] (обычно этот блок располагается в самом низу ;inf-файла). Использование переменных позволяет улучшить читабельность ;inf-файлов большого размера, а также предоставляет разработчику возможность ;цетрализованного хранения всех информационных и других строчек программы. ;То есть, вместо того, чтобы искать необходимую для изменения строчку по ;всему содержимому inf-файла, он может описать ее в блоке [Strings] [AutoRunOff] HKLM, %PATH%, AutoRun, 0x00010001, 0 ;добавляем строку в диалог Установка\Удаление программ. В первой главе ;мы кратко расматривали формат этого диалога. [InstallInf] HKLM, %DISPLAY% autorunOnOff,,, HKLM, %DISPLAY% autorunOnOff, DisplayName,,%NAME_ON% HKLM, %DISPLAY% autorunOnOff, UninstallString,,\ "rundll32 setupapi, InstallHinfSection DefaultUninstall 132 %17%\primer.inf" [DefaultUninstall] AddReg = AutoRunOn [AutoRunOn] HKLM, %PATH%, AutoRun, 0x00010001, 1 HKLM, %DISPLAY% autorunOnOff, DisplayName,,%NAME_OFF% HKLM, %DISPLAY% autorunOnOff, UninstallString,,\ "rundll32 setupapi, InstallHinfSection DefaultInstall 132 %17%\primer.inf" [infcopy] primer.inf [DestinationDirs] infcopy = 17 [SourceDisksFiles] primer.inf = 55 [SourceDisksNames] 55 = %DISKNAME%, , 1 ;содержит в себе описание переменных, используемых в inf-файле [Strings] PATH = "SYSTEM\CurrentControlSet\Services\Cdrom" DISPLAY = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" NAME_ON = "Восстановить автоматический запуск дисков" NAME_OFF = "Отключить автоматический запуск дисков" DISKNAME = "parad0x-des1Gn" Рисунок 1 Рис. 4.06. Создание команды в диалоге Установка/Удаление программ Диалог установки компонентов WindowsОтдельной частью диалога УСТАНОВКА/УДАЛЕНИЕ ПРОГРАММ является диалог УСТАНОВКА КОМПОНЕНТОВ WINDOWS, который вызывается нажатием на соответствующую кнопку. Как правило, данный диалог содержит в себе сведения не обо всех компонентах Windows, доступных на компьютере. Например, с его помощью нельзя удалить с компьютера стандартные игры, такие как САПЕР или ПАУК. Это происходит потому, что по умолчанию возможность удаления или установки игр скрыта из диалога установки компонентов Windows. Список содержимого диалога УСТАНОВКА КОМПОНЕНТОВ WINDOWS описывается в файле sysoc.inf, расположенном в каталоге %systemroot%\inf. Данный файл содержит в себе блок inf-файла [COMPONENTS]. Данный блок содержит в себе набора строк, определяющих, будет ли отображаться в диалоге отдельный компонент операционной системы Windows XP. Строки имеют следующий формат: «идентификатор»=«библиотека для работы компонентов», «функция библиотеки», «inf-файл, описывающий компоненты»,«отображение компонентов»,«номер». Наиболее важными элементами данной строки являются следующие.
На рисунке 4.07 показан пример содержимого этого файла. Рисунок 2 Рис. 4.07. Содержимое файла sysoc.inf Другой возможностью является добавление в данный диалог своих компонентов. Для этого необходимо сначала создать inf-файл, описывающий новые компоненты, а потом создать в файле sysoc.inf ссылку на созданный inf-файл. Давайте сначала посмотрим на простой пример inf-файла. В этом примере мы создаем сразу корневой подраздел, отображаемых непосредственно в диалоге установки компонентов Windows, два вложенных в этот подраздел подраздела, а также еще два подраздела, которые и будут выполнять установку или удаление компонентов. В нашем случае эти подразделы будут просто скрывать (или отображать, в зависимости от состояния флажка) версию Windows с рабочего стола, а также скрывать (или отображать) название значка МОЙ КОМПЬЮТЕР. Листинг 4.13. Создание подразделов в диалоге компонентов. [version] signature="$Chicago$" [Optional Components] TopMain Interface Settings HTMcomputer Versus [TopMain] OptionDesc = Мои настройки Tip = Варианты настройки интерфейса и конфигурации IconIndex = 0 [Interface] OptionDesc = Интерфейс Windows Tip = Варианты настройки интерфейса IconIndex = 4 Parent = TopMain [Settings] OptionDesc = Конфигурация Windows Tip = Варианты настройки конфигурации компьютера IconIndex = 16 Parent = TopMain [HTMcomputer] OptionDesc = Скрыть название моего компьютера Tip = Скрывает название значока Мой компьютер IconIndex = 0 Parent = Interface AddReg = AddHTM Uninstall = HTMUn Modes = 0,1,2,3 [Versus] OptionDesc = Отобразить версию на рабочем столе Tip = отображает версию операционной системы на рабочем столе пользователя IconIndex = 4 Parent = Interface AddReg = AddVersion Uninstall = VersUn Modes = 0,1,2,3 [AddHTM] HKCR, "CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ShellFolder", WantsFORDISPLAY, 0x00010001, 1 [AddVersion] HKCU, "Control Panel\Desktop", PaintDesktopVersion, 0x00010001, 1 [HTMUn] DelReg = HTMDel [VersUn] AddReg = VersDel [HTMDel] HKCR, "CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\ShellFolder", WantsFORDISPLAY [VersDel] HKCU, "Control Panel\Desktop", PaintDesktopVersion, 0x00010001, 0 Формат inf-файла для создания компонентов в диалоге установки Windows немного отличается от обычного формата inf-файлов. В–первых, основной блок inf-файла обязательно должен называться [OPTIONAL COMPONENTS] иначе inf-файл работать не будет. Данный блок содержит в себе список других блоков данного inf-файла. Каждый из описанных в блоке [OPTIONAL COMPONENTS] блоков определяет один подраздел в диалоге установки компонентов Windows. Блок описания подраздела установки компонента содержит в себе следующие ключевые слова.
Также в блоке установки компонента можно пользоваться такими стандартными ключевыми словами как ADDREG, BITREG, DELREG, COPYFILES и т.д. Все блоки, описанные в этих ключевых словах, будут выполняться при установке флажка напротив соответствующего компонента. А теперь давайте добавим ссылку на наш компонент в файл sysoc.inf. для этого необходимо в блок [COMPONENTS] добавить строку вида hello=ocgen.dll,OcEntry,prim2.inf,,7. Где test2 определяет идентификатор присоединяемого inf-файла, а prim.inf является названием самого присоединяемого файла. Стоит еще сказать, что созданный нами inf-файл должен находиться в каталоге %systemroot%\inf. Также в строке указывается название библиотеки и функция из этой библиотеки, которая будет выполнять установку наших компонентов. Как правило, нет никакой разницы между различными функциями различных библиотек. Главное, чтобы они умели работать с диалогом установки компонентов. Поэтому мы выбрали первую попавшуюся в файле sysoc.inf библиотеку и функцию для нее. На рисунке 4.08 показан результат добавления наших компонентов. Рисунок 3 Рис. 4.08. Создание разделов диалога Inf-файл для логического дискаЕще одной возможностью, которую предоставляют inf-файлы, является добавление в контекстное меню логических дисков своих команд, а также изменение значка логического диска. Для этого необходимо создать специальный файл, который должен называться autorun.inf. Созданный inf-файл необходимо поместить в корень логического диска. Давайте рассмотрим пример создания файла autorun.inf. Листинг 4.14. Пример создания файла autorun.inf [autorun] icon = E:\images\fotoo\Art_galery\p.BMP shell = open shell\RunPh\command = photoshop.exe shell\RunPh = Запустить photoshop Файл autorun.inf не содержит блока версии inf-файла, но он должен содержать в себе блок [AUTORUN]. Содержимое этого блока довольно просто в понимании, если вы прочитали раздел книги о корневом разделе HKEY_CLASSES_ROOT в главе о реестре. Как можно заметить, ключевые слова, начинающиеся со слова SHELL, являются просто подразделами реестра, которые должны быть добавлены к ветви HKEY_CLASSES_ROOT\DRIVE при отображении контекстного меню данного логического диска, а ключевое слово ICON определяет значок диска. Тем не менее, давайте вспомним содержимое корневого раздела HKEY_CLASSES_ROOT\DRIVE\SHELL и опишем, что же конкретно делают ключевые слова данного файла.
Для возможности работы файла autorun.inf необходимо, чтобы параметр типа REG_BINARY NoDriveTypeAutoRun, расположенный в ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer, был равен 0. ЗаключениеКак можно заметить, с помощью inf-файлов можно выполнить довольно много интересных возможностей. При этом то, что мы с вами рассмотрели, является только каплей в море. Например, с помощью inf-файлов можно также выполнить такие действия, как запуск или остановка служб, назначение прав на доступ к файлам, архивирование реестра и многое другое. При этом Inf-файлы постоянно усовершенствуются и еще неизвестно, что с их помощью можно будет выполнить завтра. Продолжение следует Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=172
|
В избранное | ||