Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Секреты Windows: статьи о реестре, rundll32.exe, программах Реестр Windows Vista. Проводник: Контекстное меню


Есть вопросы по работе с Windows? Задайте их нам и нашим посетителям в разделе Форум (http://onestyle.com.ua/q.php). Возможно, мы сможем помочь вам решить возникшие проблемы.

Новости нашего сайта:

В конец записи

Книга "Реестр Windows Vista. На 100%", Глава 3. Интерфейс, 3.3. Проводник: Контекстное меню.

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

Регистрация расширения

Содержимое контекстного меню файла или папки строится при помощи ветвей корневого раздела HKCR. Однако перед тем как рассмотреть содержимое этих ветвей, давайте рассмотрим структуру хранения расширений файлов.

Пользовательские расширения

Существует два вида расширений: пользовательские и системные.

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

Для регистрации пользовательских расширений в корневом разделе HKCR необходимо создать два подраздела — подраздел расширения и подраздел идентификатора.

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

Кроме того, в параметре (по умолчанию) данного подраздела содержится название подраздела идентификатора, описывающего соответствующее расширение.

Подраздел идентификатора Название данного подраздела определяется параметром (по умолчанию) подраздела расширения. В этом подразделе определяются основные настройки файлов с соответствующим расширением. В частности, в этом подразделе описываются команды и настройки контекстного меню файлов с данным расширением.

Системные расширения

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

Для описания системных расширений используется только один подраздел корневого раздела HKCR — подраздел идентификатора. Например, давайте рассмотрим основные идентификаторы системных расширений.

Unknown Настройки данного подраздела идентификатора применяются для всех файлов, расширения которых не зарегистрированы в операционной системе.

* Данный подраздел идентификатора содержит в себе настройки, применяемые для всех файлов с любыми расширениями.

AllFilesystemObjects Данный подраздел идентификатора содержит в себе настройки, применяемые для всех объектов файловой системы Windows Vista (пользовательских расширений файлов, дисков, папок и т.д.).

Если вы не пользуетесь списком Отправить контекстного меню файлов, тогда его можно удалить. Для этого нужно удалить подраздел SendTo из ветви реестра HKCR\AllFilesystemObjects\shellex\ContextMenuHandlers.

Drive Данный подраздел идентификатора содержит в себе настройки, применяемые для описания разделов дисков.

Folder Данный подраздел идентификатора содержит в себе настройки папок.

Directory Данный подраздел идентификатора содержит в себе настройки папок с файлами, а также настройки контекстного меню рабочего стола и проводника.

Настройки контекстного меню рабочего стола и проводника мы с вами рассмотрели ранее.

Формирование контекстного меню

А теперь давайте займемся непосредственно описанием настроек контекстного меню файлов и папок.

Команды контекстного меню файлов и папок описываются в двух ветвях реестра: HKCR\«идентификатор»\shell и HKCR\«идентификатор»\shellex.

Обычные команды

Команды ветви HKCR\«идентификатор»\shell можно назвать обычными — в данной ветви реестра определяются команды, которые при своем вызове из контекстного меню открывают какую-либо программу или выполняют какую-либо команду.

Каждая обычная команда контекстного меню описывается в отдельном дочернем подразделе ветви HKCR\«идентификатор»\shell.

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

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

  • (по умолчанию). Значение данного параметра определяет название команды, отображаемой в контекстном меню рабочего стола. Если же значение данного параметра не определено, тогда название соответствующей команды контекстного меню определяется названием самого дочернего подраздела (или же параметра MUIVerb).
  • LegacyDisable. Присутствие данного параметра запрещает отображение создаваемой данным подразделом команды в контекстном меню.
  • ProgrammaticAccessOnly. Присутствие данного параметра также запрещает отображение создаваемой подразделом команды в контекстном меню, разрешая только программный доступ к данной команде.
  • MUIVerb. Значение данного параметра переопределяет значение параметра (по умолчанию).
  • NoWorkingDirectory. Присутствие данного параметра говорит о том, что при работе программы, запускаемой данной командой контекстного меню, не нужно указание рабочего каталога программы.
  • Extended. Присутствие данного параметра говорит о том, что команда, определяемая при помощи данного подраздела, будет отображаться в контекстном меню только при нажатии клавиши SHIFT.

Дочерний подраздел, определяющий команду контекстного меню, кроме необязательных параметров должен содержать в себе подраздел command. Именно параметр (по умолчанию) данного подраздела содержит в себе команду, которая будет выполняться при выборе соответствующего элемента контекстного меню.

Команды ActiveX

Также команды контекстного меню файлов могут описываться в ветви реестра HKCR\«идентификатор»\shellex. В данной ветви реестра описываются команды и дополнительные настройки (не только контекстного меню), которые основаны на работе зарегистрированных в операционной системе ActiveX-объектов.

Данная ветвь реестра может содержать в себе набор дочерних подразделов, от названия которых определяется то действие, которое будет выполняться описанным в подразделе ActiveX-объектом.

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

Итак, ActiveX-объекты могут описываться в следующих подразделах ветви реестра HKCR\«идентификатор»\shellex.

IconHandler Содержит в себе описание ActiveX-объектов, исполняющих роль обработчиков значка для данного расширения файла.

Обработчик значков используется либо для формирования значка отдельного файла с соответствующим расширением каким-либо способом, отличным от использования подраздела DefaultIcon, либо для определения значка, отображаемого в диалоге СВОЙСТВА.

PropertySheetHandlers Содержит в себе описание ActiveX-объектов, предназначенных для добавления новых вкладок в диалог СВОЙСТВА для файлов соответствующего расширения.

ContextMenuHandlers Содержит в себе описание ActiveX-объектов, предназначенных для добавления новых команд в контекстное меню файлов данного расширения.

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

DropHandler Содержит в себе описание ActiveX-объектов, предназначенных для настройки действий, выполняемых при операции drag-n-drop над файлами с соответствующим расширением.

Диалог Открыть с помощью…

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

Если значение параметра REG_DWORD типа NoInternetOpenWith, расположенного в ветви HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer, равно 1, тогда возможность ассоциирования нужного приложения с расширением файла при помощи Интернет будет отключена.

Если вы выберите ручную регистрацию, тогда перед вами отобразится диалог ВЫБОР ПРОГРАММЫ (рис. 4.08).


Рис. 4.08. Диалог Выбор программы

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

Если вы не находите нужную программу в списке, ее можно выбрать вручную при помощи кнопки ОБЗОР….

Список программ

Программы, отображаемые в списке диалога ВЫБОР ПРОГРАММЫ, определяются при помощи ветви реестра HKCR\Applications. Данная ветвь содержит в себе набор подразделов, названных в честь программ, которые могут отображаться в списке.

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

В подразделах ветви HKCR\Applications может присутствовать параметр строкового типа NoOpenWith. Если он присутствует, тогда программа, соответствующая подразделу, в котором присутствует параметр, никогда не будет отображаться в диалоге ВЫБОР ПРОГРАММЫ.

Список Открыть с помощью

Если вы часто открываете файлы одного и того же расширения при помощи различных программ, тогда в контекстном меню файлов соответствующего расширения может появиться список ОТКРЫТЬ С ПОМОЩЬЮ, который содержит в себе набор тех программ, с помощью которых вы открывали файлы соответствующего расширения.

Элементы данного списка содержатся в параметрах строкового типа ветви реестра HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\«расширение файла»\OpenWithList.

В данной ветви реестра находятся параметры с названиями вида a, b, c и т.д. значения этих параметров определяют названия программ, которые будут отображаться в списке ОТКРЫТЬ С ПОМОЩЬЮ контекстного меню.

Также в данной ветви реестра находится параметр MRUList. Он содержит в себе порядок отображения значений остальных параметров данной ветви в списке ОТКРЫТЬ С ПОМОЩЬЮ контекстного меню.

Добавление команд контекстного меню

И напоследок давайте рассмотрим несколько примеров добавления новых команд к контекстному меню системных и обычных файлов.

Команда открытия в блокноте для незарегистрированных файлов Чтобы создать команду для открытия файлов с неизвестным расширением в блокноте, достаточно присвоить параметру (по умолчанию) ветви реестра HKCR\Unknown\shell\Открыть в Notepad\command значение notepad.exe %1.

Команда Открыть с помощью… для исполняемых файлов Также можно создать команду, вызывающую диалог ВЫБОР ПРОГРАММЫ для исполняемых файлов (по умолчанию этот диалог никак нельзя вызвать для исполняемых файлов). Для этого достаточно в параметре (по умолчанию) ветви реестра HKCR\exefile\shell\Открыть с помощью\command создать значение rundll32.exe shell32.dll,OpenAs_RunDLL %1 %2.

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

Для добавления этой команды достаточно параметру (по умолчанию) ветви HKCR\Folder\shellex\ContextMenuHandlers\CopyTo задать значение {C2FBB630-2971-11D1-A18C-00C04FD75D13}.

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

Для добавления этой команды достаточно параметру (по умолчанию) ветви HKCR\Folder\shellex\ContextMenuHandlers\MoveTo задать значение {C2FBB631-2971-11d1-A18C-00C04FD75D13}.

Команда Добавить в список записи для папок Данная команда позволяет запустить проигрыватель Windows Media Player с открытой вкладкой ЗАПИСЬ, в списке которой уже будут отображаться файлы из данной папки — вам будет достаточно лишь нажать на кнопку НАЧАТЬ ЗАПИСЬ, чтобы записать музыкальные файлы из папки на диск.

Для добавления этой команды достаточно параметру (по умолчанию) ветви HKCR\Folder\shellex\ContextMenuHandlers\CopyToDisk задать значение {8DD448E6-C188-4aed-AF92-44956194EB1F}.

Команда Воспроизвести с помощью Windows Media для папок Данная команда позволяет запустить проигрыватель Windows Media Player с уже загруженными в плей-лист музыкальными файлами, которые операционная система найдет в данной папке.

Для добавления этой команды достаточно параметру (по умолчанию) ветви HKCR\Directory\shellex\ContextMenuHandlers\OpenInFolder задать значение {CE3FB1D1-02AE-4a5f-A6E9-D9F1B4073E6C}.

Команды Воспроизвести с помощью проигрывателя Windows Media и Добавить в список проигрывателя Windows Media для папок Данные команды позволяют либо запустить проигрыватель Windows Media Player с уже загруженными в плей-лист музыкальными файлами, которые операционная система найдет в данной папке, либо добавить эти музыкальные файлы к плей-листу воспроизводимых в данный момент песен.

Для добавления этих команд достаточно параметру (по умолчанию) ветви HKCR\Directory\shellex\ContextMenuHandlers\AddToList задать значение {F1B9284F-E9DC-4e68-9D7E-42362A59F0FD}.

Продолжение следует

Рейтинг: 0 
Оцените: 1 2 3 4 5
В начало записи
Оригинал статьи: http://www.onestyle.com.ua/txt.php?u=319

В избранное