Разделы ветви идентификатора

Разделы ветви идентификатора

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

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

? DefaultIcon — параметр (По умолчанию) этого раздела определяет путь к BMP-файлу изображения, применяемому для отображения значков файлов с соответствующим расширением.

? Shell — это, наверное, самый интересный раздел идентификатора, ведь именно его содержимое и определяет команды контекстного меню для расширения, а также их свойства. Параметр (По умолчанию) данного раздела определяет название глагола (глаголы являются подразделами раздела shell), команда которого будет использоваться при выполнении попытки открытия файлов соответствующего расширения двойным щелчком кнопкой мыши. Параметр (По умолчанию) может также хранить перечисление всех глаголов раздела — в этом случае он описывает последовательность, в которой они будут расположены в контекстном меню файла.

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

Данное правило не распространяется на так называемые стандартные глаголы системы — если их параметр (По умолчанию) не определен, то будет использоваться название команды контекстного меню, заложенное в системе для данных глаголов. К стандартным можно отнести следующие глаголы:

? Open — добавляет в контекстное меню команду Открыть;

? Explore — Проводник;

? Find— Найти;

? Openas — Открыть с помощью;

? Runas — Запуск от имени;

? Print — Печать;

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

Глаголы могут содержать следующие параметры.

? MUIVerb — если этот параметр строкового типа присутствует в системе, то его значение будет переопределять значение параметра (По умолчанию) данного глагола.

? FriendlyAppName — еще один параметр строкового типа. Он переопределяет команду, отображаемую в списке Открыть с помощью и идентифицирующую программу, запускаемую с помощью данного глагола. Например, если создать этот параметр в ветви реестра HKEY_CLASSES_ROOT xtfileshellopen и присвоить ему значение, допустим, Мой блокнотик, то можно будет увидеть диалог, представленный на рис. 4.4.

Рис. 4.4. Создание синонима программы

? BrowserFlags — этот параметр иногда можно встретить в ветви реестра HKEY_CLASSES_ROOTFoldershellopen. Он является битовой маской и может определять способ открытия папки и всех ее дочерних объектов в Windows. Например, если в значении этого параметра присутствует битовая маска 0x00000020, то папки будут открываться с помощью Проводника, то есть с открытой панелью папок в левой части окна.

? Extended — если данный параметр строкового типа существует в подразделе глагола, то описываемая этим подразделом команда не будет отображаться в контекстном меню файлов соответствующего расширения.

Кроме параметров, подразделы глаголов включают в себя и несколько подразделов, которые как раз и определяют команды, выполняемые при выборе из контекстного меню файла соответствующего действия.

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

ПРИМЕЧАНИЕ

В реестре Windows XP существует ветвь, переопределяющая программу, которая будет запускаться при двойном щелчке кнопкой мыши на файле (то есть переопределяющая параметр (По умолчанию) подраздела command для глагола open). Этой ветвью является HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerFileExts«расширение». Она может хранить строковый параметр Application, который как раз и определяет приложение, запускаемое при двойном щелчке на файле с соответствующим расширением.

? Ddeexec — подраздел необязателен. Его содержимое определяет команду DDE, которая будет исполняться вместе с указанной командой подраздела command при выборе из контекстного меню соответствующего действия. Само сообщение DDE описано в параметре (По умолчанию) данного подраздела, а параметры для его исполнения записаны в дочерних подразделах. Более подробно об этих параметрах можно узнать из базы данных, поставляемой с книгой (в самой книге эти параметры рассмотрены не будут, так как на практике обычные пользователи их применяют не часто).

ПРИМЕЧАНИЕ

DDE (динамический обмен данными) — это специальные команды, которые позволяют нескольким работающим приложениям обмениваться между собой данными. Например, с помощью DDE можно из одного приложения управлять работой другого.

Но не только раздел shell может хранить настройки контекстного меню файлов с соответствующим расширением — команды контекстного меню могут содержаться и в разделе shellex. Нет, это не избыточность — раздел shellex имеет совершенно не такое назначение, как shell. Если раздел shell создан специально для того, чтобы описывать команды меню, вызывающие различные программы с помощью стандартного диалога Запуск программы, то shellex хранит сведения о дополнительных расширениях, которые могут использоваться при отображении значка, контекстного меню или диалога свойств для файлов данного расширения. Эти расширения реализованы в системе с помощью ActiveX-объектов, но о них мы скажем чуть позже, когда будет рассматриваться ветвь реестра, содержащая сведения обо всех установленных на компьютере ActiveX-объектах.

В зависимости от назначения ActiveX-объекта его описание должно находиться в одном из дочерних подразделов раздела shellex. Например, в подразделе PropertySheetHandlers хранятся дополнительные вкладки для диалога Свойства файлов данного расширения. В подразделе ContextMenuHandlers определяются дополнительные команды контекстного меню, использующие для своей работы ActiveX-объекты. В подразделе DropHandler определяется обработчик для операций drag-and-drop, выполняемых с файлами соответствующего расширения, а в подразделе IconHandler находятся сведения об обработчиках значков, которые будут выводить соответствующий значок в диалоге свойств или вместо стандартного значка файла.

Независимо от того, какой подраздел используется для описания расширения ActiveX-файла, его содержимое должно быть представлено в одной из следующих форм.

? С помощью набора подразделов, названных в честь соответствующих CLSID-номеров ActiveX-объектов (один подраздел — описание одного расширения).

? С использованием подразделов, название которых не имеет значения. В этом случае параметры (По умолчанию) данных подразделов должны хранить значения, названные в честь соответствующих CLSID-номеров ActiveX-объектов (один подраздел — описание одного расширения).