Как добавить команду в контекстное меню в windows 7

Однажды я уже рассказывал на Хабре, как можно добавить собственную команду в контекстное меню браузера Internet Explorer (Удобное дополнение к IE при написании о...

Однажды я уже рассказывал на Хабре, как можно добавить собственную команду в контекстное меню браузера Internet Explorer (Удобное дополнение к IE при написании обзоров / Internet Explorer / Хабрахабр). Сейчас я расскажу, как добавить свою команду в контекстное меню Проводника. Поехали.

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

Итак, чтобы добавить новую команду в контекстное меню, достаточно создать в разделе HKCRDirectoryBackgroundShell новый подраздел. Предположим, мы хотим, чтобы в меню появилась команда, запускающая стандартный Блокнот. Создаем подраздел notepad и сразу можем проверить и убедиться, что в контекстном меню Рабочего стола появилась одноименная команда. Нам даже не пришлось перезагружать компьютер. Естественно, такая команда не очень нас устраивает, и мы хотим задать собственный текст, например, Блокнотик. Для этого редактируем параметр по умолчанию созданного подраздела и записываем для него новое значение, которое мы хотим видеть, например, прописываем слово Блокнотик. Снова проверяем и убеждаемся, что в контекстном меню появилась наша команда.

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

  • MUIVerb – значение данного параметра заменяет собой значение параметра по умолчанию, т.е. мы можем в этом параметре задать имя для команды в меню.
  • Extended – при наличии данного параметра без значения говорит системе о том, что команда должна отображаться только при нажатии клавиши Shift. Вы можете посмотреть на подраздел HKEY_CLASSES_ROOTDirectoryBackgroundshellcmd, в котором содержится такой параметр. Поэтому, если держать нажатой клавишу Shift, то в контекстном меню появится команда Открыть окно команд.

Теперь перейдем к подразделам. Прежде всего, нужно создать подраздел command. Параметр по умолчанию данного подраздела должен содержать в себе команду, которая будет выполняться при выборе соответствующего элемента контекстного меню. В нашем случае, нужно прописать команду notepad.exe.

Как видите, несколько несложных операций в разделе реестра и мы получаем новую команду для контекстного меню Рабочего стола и Проводника. А зная алгоритм создания новой команды, вы можете изучить и отредактировать параметры от других программ, которые прописали свои разделы в вашей системе.

Включение/выключения эскизов

Рассмотрим практический пример создания собственной команды в меню Проводника. Если вы предпочитаете просматривать файлы в режиме Значки, то заметили, что, например, значки картинок отображаются в виде эскизов. В настройках папки можно изменить данное поведение и отключить показ эскизов. Но включать или отключать эти настройки очень утомительно. Судите сами – сначала надо нажать на клавишу Alt, чтобы появилась строка меню у Проводника, далее выбираем меню Сервис | Параметры папок…. После этого нужно переключиться на вкладку Вид и поставить или убрать флажок у команды Всегда отображать значки, а не эскизы. Упростим задачу при помощи реестра и небольшого VBS-сценария, который циклически меняет значения параметра IconsOnly в разделе HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced. Создадим новый раздел ToggleThumb в разделе HKEY_CURRENT_USERSoftwareClassesDirectoryBackgroundShell и присвоим параметру по умолчанию строковое значение Включить/Выключить эскизы. Тем самым мы создали новую команду для контекстного меню папки в Проводнике. Обратите внимание, что теперь мы используем раздел HKEY_CURRENT_USER, чтобы действие примера распространялось только на одного пользователя. Теперь создаем подраздел command и прописываем в параметре по умолчанию строку wscript.exe «%WinDir%togglethumbs.vbs». Далее нужно создать сценарий, который будет переключать режим показа эскизов.

Set WshShell = CreateObject("WScript.Shell")
strValue = "HKCUSoftwareMicrosoftWindowsCurrentVersionExplorerAdvancedIconsOnly"
strIconsOnly = WshShell.RegRead(strValue)
If strIconsOnly = 0 Then
WshShell.RegWrite strValue,1,"REG_DWORD"
Else
WshShell.RegWrite strValue,0,"REG_DWORD"
End If
WshShell.SendKeys "{F5}"

Сохраните созданный сценарий под именем togglethumbs.vbs и скопируйте его в папку Windows.
Теперь вы можете открыть Проводники и проверить работу новой команды. Для удобства я сначала выбрал режим Крупные значки, которые отображаются в виде эскизов.

Отображение файлов в виде эскизов

Далее я выбрал в контекстном меню пункт Включить/Выключить эскизы и получил следующий результат – вместо эскизов я увидел значки программы Adobe Photoshop, ознакомительную версию которой я поставил несколько дней назад на своем компьютере.

Отображение файлов в виде значков

Идею для данного примера я почерпнул со страницы http://www.winhelponline.com/blog/toggle-thumbnail-previews-right-click-menu-windows-vista-windows-7/ и немного модифицировал ее. Автор оригинального примера предлагает для большего удобства воспользоваться готовыми REG-файлами создания (togglethumbs.reg) и удаления (undo.reg) разделов для новой команды, а также готовый сценарий (togglethumbs.vbs). От себя добавлю, что копирование файла сценария в папку Windows, используемое автором идеи – не самый лучший вариант, так как данная папка является защищенной и не нужно засорять ее собственными файлами. Поэтому, если вы будете использовать пример на своем компьютере, то переделайте его таким образом, чтобы файл сценария находился в более доступном для пользователя месте.

Удаление содержимого папки без удаления самой папки

Практически аналогично добавляется собственная команда и в контекстное меню папки. Недавно я нашел один пример применения контекстного меню папки в Проводнике — Add Empty Folder Contents to Windows 7 Right Click Context Menu. | The Windows Club.

Автор примера рассказывает, как добавить в контекстное меню папки команду для удаления содержимого папки без удаления самой папки. Т.е. вам не придется открывать папку, выделять все файлы и нажимать на клавишу Delete, достаточно выбрать команду Удалить содержимое папки. Я немного модифицировал пример, чтобы он более органично смотрелся на русской версии Windows.

Для этого добавляем в раздел HKEY_CLASSES_ROOTDirectoryshell подраздел DeleteFolderContent и создаем в нем строковый параметр MUIVerb со строкой Удалить содержимое папки. Далее в разделе DeleteFolderContent создаем подраздел command и в его параметре по умолчанию прописываем строчку:

cmd /c "cd /d %1 && del /s /f /q *.*"

Все готово и можете пользоваться примером.

Заключение

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

Как видите, вы можете самостоятельно настроить контекстное меню Проводника. Все зависит от вашей фантазии. Если вам нужна дополнительная информация о параметрах реестра, то можете скачать электронный справочник Реестр Windows на моем сайте user.alexanderklimov.ru. Кроме того, достигнута предварительная договоренность с одним издательством о выпуске книги по реестру Windows 7. Как говорится, следите за новостями. Кстати, работая над книгой, обнаружил, что очень многие параметры устарели и их пора удалить из справочника. Но, так как число пользователей Windows XP еще велико, то я решил создать некую страничку-отстойник, куда буду сбрасывать старые парамеры.

P.S. Строго говоря, приемы настройки контекстного меню в Проводнике доступны и в других версиях Windows, в том числе в Windows XP. Но, я уже давно перешел на Windows 7, поэтому публикую данный пост именно в этом блоге.

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

С помощью контекстного меню пользователь выполняет необходимые действия в программах или в операционной системе Windows: запускает приложения, копирует, вырезает или удаляет файлы, получает доступ к необходимым параметрам и функциям ОС.

Содержание:

  1. Как изменить контекстное меню
  2. Как добавить программу в контекстное меню Рабочего стола
  3. Как в контекстном меню указать команду для открытия сайта в интернете
  4. Добавление новых пунктов в контекстное меню «Отправить»
  5. Выводы статьи
  6. Добавление пункта в контекстное меню рабочего стола Windows (видео)

При настройках по умолчанию, Windows самостоятельно добавляет необходимые пункты в контекстное меню. Установленные программы также добавляют свои пункты в контекстное меню, в зависимости от особенностей своей работы.

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

Как изменить контекстное меню

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

Части пользователей необходимо внести изменения в контекстное меню в операционной системе Windows. Нужно настроить контекстное меню, в зависимости от своих потребностей, например, добавить команду в контекстное меню для запуска программы, или для быстрого вызова системного средства, или для ускорения доступа к определенному параметру или инструменту.

Изменение контекстного меню можно выполнить с помощью специализированных программ, например, FileMenu Tools или Easy Context Menu. Другим методом можно редактировать контекстное меню в системном средстве — Редакторе реестра Windows.

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

Практически вся информация, связанная с настройками контекстного меню, находится в ветви реестра «HKEY_CLASSES_ROOT», в которой в свою очередь размещены подразделы, имеющие отношения к элементам меню:

  • «*» и «.» — информация обо всех типах файлов, имеющихся на компьютере.
  • «AllFileSystemObjects» — все данные, относящиеся к файлам и папкам.
  • «Folder» — изменения параметров контекстного меню Проводника Windows для выбранной папки.
  • «Directory» — изменения параметров внутри открытой папки.
  • «DirectoryBackground» — изменение контекстного меню внутри открытой папки, если не выделены объекты.
  • «DesktopBackground» — изменение контекстного меню Рабочего стола Windows.
  • «Drive» — изменение пунктов контекстного меню, касающиеся дисковой системы ПК.
  • «Network» — параметры сетевого окружения.
  • «Printers» — настройка контекстного меню принтеров.

Для выполнения необходимых операций нам понадобится Редактор реестра. Прочитайте статью о том, как открыть редактор реестра в операционной системе Windows разными способами.

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

  • HKEY_CLASSES_ROOT/*/shell — раздел для изменения контекстного меню файлов.
  • HKEY_CLASSES_ROOTCLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}shell — изменение контекстного меню значка «Этот компьютер» (Компьютер, Мой компьютер).
  • HKEY_CLASSES_ROOTCLSID{645FF040-5081-101B-9F08-00AA002F954E}shell — изменение контекстного меню значка «Корзина».
  • HKEY_CLASSES_ROOTFoldershell — изменение контекстного меню папок.
  • HKEY_CLASSES_ROOTDriveshell — изменение контекстного меню дисков.

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

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

Как добавить программу в контекстное меню Рабочего стола

Сейчас мы посмотрим, как добавить приложение или системное средство в контекстное меню Рабочего стола. Предположим, нам часто требуется запустить Панель управления, для выполнения настроек компьютера. Поэтому нам нужно добавить соответствующий пункт в контекстное меню Windows 10.

Выполните следующие действия:

  1. Откройте редактор реестра на компьютере.
  2. Пройдите по пути:
HKEY_CLASSES_ROOTDesktopBackgroundShell
  1. Щелкните два раза левой кнопкой мыши по «Shell», в контекстном меню выберите сначала «Создать», а затем «Раздел».

создать раздел

  1. Задайте любое имя разделу буквами латинского алфавита, можно с цифрами. Пускай на этом примере будет «New1».
  2. Кликните правой кнопкой мыши по свободному месту внутри раздела, выберите «Создать» → «Строковый параметр».

создать строковый параметр

  1. Присвойте имя параметру «MUIverb». Это обязательный параметр, который необходим для отображения имени команды в меню.
  2. Щелкните по параметру правой кнопкой мыши, выберите «Изменить…».
  3. В окне «Изменение строкового параметра», в поле «Значение:» напишите «Панель управления» или свой вариант, нажмите на кнопку «ОК».

значение параметра

В данном разделе можно создать несколько необязательных параметров:

  • Icon — для отображения значка системного средства или программы в контекстном меню.
  • Position — место расположения пункта в списке контекстного меню. Если не задать этот параметр, данная позиция окажется в центре меню. Можно задать значения «Top» (вверху) или «Botton» (внизу).
  • Extended — при наличии этого параметра пункт контекстного меню отображается только при нажатой клавиши «Shift».

Если нужно, для добавления значка программы или системного инструмента создайте строковый параметр «Icon». В поле значение нужно ввести путь до исполняемого файла или путь до «dll» (динамически подключаемой библиотеки) и номер значка (ресурса).

В случае с панелью управления, можно указать «imageres.dll,22» (стандартный значок с номером ресурса), или путь до файла «control.exe». Поскольку панель управления находится в системной папке Windows, можно указать только имя файла, без полного пути. В других случаях указывайте полный путь к исполняемому файлу. Для инструментов из системных папок также можно указывать полный путь к файлу.

изменение строкового параметра

Если необходимо, измените позицию пункта в меню.

изменение позиции

  1. В разделе «New1» создайте раздел «command».
  2. В разделе «command» щелкните правой кнопкой мыши по параметру «(По умолчанию)», в открывшемся меню нажмите на «Изменить…». Создание этого раздела необходимо для запуска приложения.
  3. В поле значение введите полный путь до исполняемого файла данного приложения, в нашем случае «C:WindowsSystem32control.exe», или просто «control.exe», потому что файл панели управления находится в системной папке Windows.

В итоге, в Редактор реестра были добавлены следующие параметры, которые отображаются на этом изображении.

параметры реестра

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

новый пункт меню

Подобным способом в контекстное меню можно добавить другие программы.

Как в контекстном меню указать команду для открытия сайта в интернете

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

Пройдите следующие шаги:

  1. В редакторе реестра откройте ветку:
HKEY_CLASSES_ROOTDesktopBackgroundShell
  1. В разделе «Shell» создайте новый раздел, присвойте ему имя на латинице, например, «New2».
  2. Создайте обязательный строковый параметр «MUIVerb», добавьте в параметр значение. Допустим «Сайт Vellisa.ru».
  3. Необязательные шаги: можно добавить иконку сайта, например, используя подходящее изображение с компьютера, и установить нужную позицию в списке меню.
  4. Кликните правой кнопкой мыши по созданному параметру, в нашем случае, «New2».
  5. Создайте раздел «command».
  6. В значение дефолтного параметра «(По умолчанию)» введите путь до исполняемого файла браузера, а через пробел добавьте адрес сайта без указания протокола.

В моем случае, при использовании браузера Google Chrome это выгладит следующим образом:

“C:Program Files (x86)GoogleChromeApplicationchrome.exe vellisa.ru”

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

ссылка на сайт в меню

Если созданные пункты контекстного меню больше не нужны, удалите из реестра ранее созданные разделы.

Добавление новых пунктов в контекстное меню «Отправить»

Для добавления программ в контекстное меню Проводника «Отправить» нет надобности в использовании редактора реестра. Можно обойтись более простым способом.

Пройдите шаги:

  1. Нажмите на клавиши «Win» + «R».
  2. В диалоговом окне «Выполнить» введите команду «shell:sendto» (без кавычек), нажмите на кнопку «ОК».
  3. Откроется папка «SendTo», в которой находятся ярлыки приложений.

папка sendto

  1. Скопируйте в эту папку ярлыки нужных программ. Для примера, я добавил в меню «Отправить» ярлык программы uTorrent.

открыть с помощью

Чтобы убрать пункт из контекстного меню «Отправить» удалите ярлык программы из папки «SendTo».

Выводы статьи

В случае необходимости, пользователь может добавить программу или системное средство в контекстное меню Windows для быстрого запуска приложения. Можно добавить свои пункты, предназначенные для запуска программ в контекстное меню Рабочего стола, папки, дисков и т. д.

Добавление пункта в контекстное меню рабочего стола Windows (видео)

Похожие публикации:

  • Убираем стрелки с ярлыков в Windows — 3 способа
  • Восстановление Windows 10 из облака: функция «Загрузка из облака»
  • Папка AppData в Windows где находится, можно ли удалить
  • Переменные среды в Windows: использование, список и таблицы

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

Например, чтобы открыть блокнот, я, бывает, пользуюсь следующими шагами: кликаю правой кнопкой мыши, выбираю «Создать» — «Текстовый документ», после чего открываю его. Хотя, можно просто добавить запуск блокнота на первый уровень этого меню и ускорить процесс. См. также: Простое редактирование контекстного меню Windows 10, 8.1 и Windows 7 в программе EasyContextMenu, Как вернуть Панель управления в контекстное меню кнопки Пуск Windows 10, Как добавить пункты в меню «Открыть с помощью».

Добавление программ в контекстное меню рабочего стола

Для добавления программ в меню, появляющееся по правому клику на рабочем столе, нам понадобится редактор реестра, запустить его можно, нажав клавиши Windows + R, после чего требуется ввести regedit в окно «Выполнить» и нажать «Ок».

Управление контекстным меню в редакторе реестра

В редакторе реестра откройте следующую ветку:  HKEY_CLASSES_ROOTDirectoryBackgroundshell

Добавление раздела в редакторе реестра

Кликните правой кнопкой по папке Shell и выберите пункт «Создать» — «Раздел» и дайте ему какое-либо имя, в моем случае — «notepad».

Имя пункта контекстного меню

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

Следующим шагом, кликните правой кнопкой мыши по созданному разделу (notepad) и, опять же, выберите «Создать» — «Раздел». Назовите раздел «command» (маленькими буквами).

Команда для запуска из контекстного меню

И последний шаг: дважды кликните по параметру «По умолчанию» и введите путь к программе, которую нужно запустить, в кавычках.

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

Отредактированное меню рабочего стола

Вы можете добавить сколько угодно программ в контекстное меню, запускать их с необходимыми параметрами и тому подобное. Все это работает в операционных системах Windows 7, 8 и Windows 8.1.

Вы тут: Главная Windows Как добавить свой пункт в контекстное меню рабочего стола и компьютера

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

Панель управления в контекстном меню

Панель управления в контекстном меню

Откройте редактор реестра и приступим!

  1. В зависимости от того, где вы хотите создать пункт меню, выберите раздел.
    • для меню «Компьютер» перейдите в раздел:
      HKEY_CLASSES_ROOTCLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}shell
    • для меню рабочего стола перейдите в раздел:
      HKEY_CLASSES_ROOTDesktopBackgroundShell
  2. Щелкните правой кнопкой мыши по разделу shell и выберите пункт СоздатьНовый раздел. Имя для раздела можно выбрать любое, но оно обязательно должно быть латинское. Назовите его, например, Item1. В этом разделе создайте строковые параметры:
    • MUIVerb (обязательно) отвечает за название пункта меню, поэтому значение можете выбирать любое. Я назвал свой Панель управления.
    • Icon (необязательно) задает значок для пункта меню. Можно задать путь к библиотеке (dll) и номер ресурса (значка), либо полный путь к исполняемому файлу (если он в системной папке, достаточно указать только имя). Для пункта «Панель управления» я задал стандартный значок imageres.dll,22 (сначала имя файла, а через запятую – номер ресурса). Впрочем, можно было указать просто control.exe.
    • Position (необязательно) отвечает за расположение пункта в контекстном меню. Вы можете задать ему значение Top (вверху) или Bottom (внизу). Если значение не задавать, пункт меню окажется в его середине. Я расположил свой пункт вверху.
    • Extended (необязательно) отвечает за отображение пункта в меню. Когда параметр присутствует, чтобы увидеть созданный пункт, нужно вызывать контекстное меню, удерживая нажатой клавишей SHIFT. Этому параметру не требуются значения.
  3. В разделе Item1 создайте подраздел command.
  4. В подразделе command дважды щелкните параметр (По умолчанию) и введите команду или полный путь к программе. Для вызова панели управления я указал control.exe (полный путь не нужен, поскольку исполняемый файл находится в системной папке).

Если вы хотите создать два пункта, создайте раздел Item2 и повторите шаги 3 – 5. Таких пунктов можно сделать сколько угодно.

Давайте посмотрим, что получилось в реестре.

Параметры пункта меню в реестре

Параметры пункта меню в реестре

Кстати, уже можно посмотреть – в контекстном меню появился пункт «Панель управления», и он работает!

Windows Registry Editor Version 5.00

;Меню компьютера
[HKEY_CLASSES_ROOTCLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}shellItem1]
«MUIVerb»=»Панель управления»
«Icon»=»imageres.dll,22»
«Position»=»Top»

[HKEY_CLASSES_ROOTCLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}shellItem1command]
@=»control.exe»

;Меню рабочего стола
[HKEY_CLASSES_ROOTDesktopBackgroundShellItem1]
«MUIVerb»=»Панель управления»
«Icon»=»imageres.dll,22»
«Position»=»Top»

[HKEY_CLASSES_ROOTDesktopBackgroundShellItem1command]
@=»control.exe»

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

Чтобы открыть свой блог в Internet Explorer, я бы добавил команду

iexplore www.outsidethebox.ms

Чтобы открыть свой блог в Opera, я бы добавил команду

C:Program FilesOperaopera.exe www.outsidethebox.ms

Выглядит это примерно так:

Свои пункты в контекстном меню

Свои пункты в контекстном меню

Заодно вы узнали, как задавать параметры командной строки исполняемым файлам. В данном случае таким параметром является URL.


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

Раскрывающиеся меню в контекстном меню

Раскрывающиеся меню в контекстном меню

Этому вопросу посвящен отдельный рассказ.

Profile picture for user Олег

Windows

Добавляем собственный элемент в контекстное меню Windows. Я работаю в Windows 10, но инструкция подойдёт и для других версий операционной системы Windows. Естественно, не будем пользоваться сторонними утилитами, всё сделаем через Реестр Windows.

Если вы хотите добавить список элементов, то вам сюда:

Добавить список элементов в контекстное меню Windows

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

Контекстное меню Windows можно вызвать несколькими способами:

  • Правой кнопкой мыши.
  • Клавишей ≣ Menu на клавиатуре.
  • Сочетанием клавиш Shift + F10.

Как я уже сказал, для добавлять элементы в контекстное меню будем через Реестр Windows. Нажимаем Win + R и выполняем:

regedit

menu

Откроется редактор реестра.

menu

Выбор контекстного меню

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

Контекстное меню любого файла:

HKEY_CLASSES_ROOT*shell

Контекстное меню папки:

HKEY_CLASSES_ROOTFoldershell

Контекстное меню «Этот компьютер»:

HKEY_CLASSES_ROOTCLSID{20D04FE0-3AEA-1069-A2D8-08002B30309D}shell

Контекстное меню корзины:

HKEY_CLASSES_ROOTCLSID{645FF040-5081-101B-9F08-00AA002F954E}shell

Контекстное меню рабочего стола:

HKEY_CLASSES_ROOTDesktopBackgroundShell

Контекстное меню запоминающих устройств:

HKEY_CLASSES_ROOTDriveshell

Если контекстное меню нужно вызвать не для всех файлов, а для файла с определённым расширением, например, PNG, то так тоже можно сделать. В разделе HKEY_CLASSES_ROOT находим нужное расширение «.png»:

HKEY_CLASSES_ROOT.png

menu

Смотрим значение строкового параметра «(По умолчанию)». У меня это pngfile. Соответственно, нашей рабочей веткой будет:

HKEY_CLASSES_ROOTpngfile

menu

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

HKEY_CLASSES_ROOT*shell

menu

Добавить элемент в контекстное меню

Добавляем новый элемент в контекстное меню. Я добавлю новый элемент «Открыть в Google Chrome». При нажатии на него указанный файл будет открыт в браузере Google Chrome.

Добавляем новый раздел в рабочую ветку реестра. Нажимаем правой кнопкой мышки по папке «shell», в открывшемся списке выбираем Создать > Раздел.

menu

Название раздела можно придумать любое. Я назвал «Открыть в Google Chrome».

menu

В новом разделе создаём строковый параметр MUIVerb. Нажимаем правой кнопкой мышки по папке «Открыть в Google Chrome», в открывшемся списке выбираем Создать > Строковый параметр.

menu

Указываем название параметра «MUIVerb».

menu

Присваиваем значение параметру MUIVerb, делаем по нему двойной щелчок. Указываем значение параметра. Данный текст будет отображаться в контекстном меню. Я пишу «Открыть в Google Chrome».

menu

Есть и другие необязательные параметры, которые можно указать для элемента контекстного меню:

  • Position (строковый параметр) — можно изменить положение элемента контекстного меню. По умолчанию элемент отображается где-то в центре.
    • Top — элемент вверху.
    • Bottom — элемент внизу.
  • Icon (строковый параметр) — иконка слева от элемента контекстного меню.
    • C:Program Files (x86)GoogleChromeApplicationchrome.exe — можно указать путь к какой-либо программе, тогда будет отображаться иконка этой программы.
    • %SystemRoot%\regedit.exe,0 — у программы может быть несколько иконок, можно указать порядковый номер иконки в файле, начиная с нуля
    • imageres.dll,275 — dll-файл с иконками и порядковый номер иконки в файле, начиная с нуля.
    • %SystemRoot%\system32\imageres.dll,82 — путь к dll-файлу с иконками и порядковый номер иконки в файле, начиная с нуля.
  • Extended (строковый параметр) — этот параметр делает элемент скрытым. Для отображения элемента нужно вызвать контекстное меню с зажатой клавишей Shift.
    • Не нужно присваивать значение, пустая строка.
  • SeparatorBefore (строковый параметр) — этот параметр добавляет разделитель выше.
    • Не нужно присваивать значение, пустая строка.
  • SeparatorAfter (строковый параметр) — этот параметр добавляет разделитель выше.
    • Не нужно присваивать значение, пустая строка.

Добавлю несколько необязательных параметров.

Создаю строковый параметр Position со значением «Top», чтобы элемент оказался вверху контекстного меню.

menu

Создаю строковый параметр Icon со значением «C:Program Files (x86)GoogleChromeApplicationchrome.exe», чтобы слева от элемента отобразилась иконка Google Chrome.

menu

Вот что получилось:

menu

Двигаемся дальше. Внутри раздела «Открыть в Google Chrome» создаём новый раздел. Нажимаем правой кнопкой мышки по папке «Открыть в Google Chrome», в открывшемся списке выбираем Создать > Раздел.

menu

Указываем название раздела «command».

menu

В новом разделе command меняем значение по умолчанию. Двойной клик мышкой по параметру «(По умолчанию)». Здесь нужно указать команду, которую нужно выполнить при выборе нашего элемента контекстного меню.

menu

Мне нужно открыть файл в браузере Google Chrome. Пишу команду:

C:Program Files (x86)GoogleChromeApplicationchrome.exe "%1"

%1 — вместо этого значения будет подставляться путь к текущему файлу.

menu

Проверяю результат. Нажимаю правой кнопкой мыши на файл. Верхний элемент — «Открыть в Google Chrome» с иконкой. При клике файл открывается в браузере.

menu

Привет админ. Если в Windows 8.1 щёлкнуть на файле правой мышью, откроется меню с выбором возможных действий: Добавить в архив, Закрепить на начальном экране и так далее. Вопрос — каким образом можно отредактировать это меню, в частности, мне нужно добавить команды «Копировать в папку» и «Переместить в папку», если это можно сделать, то я сэкономлю кучу времени на копировании и перемещении объектов. 

Как в Windows 7, 8.1 добавить в контекстное меню команды «Копировать в папку» и «Переместить в папку»?

Привет друзья! Это очень легко сделать, при помощи изменения реестра, но советую Вам перед действием создать точку восстановления системы.

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

К примеру, у меня на рабочем столе папка Acronis и я хочу скопировать её на свою флешку, но не просто в корень флешки, а в находящуюся на ней папку «Всё для Acronis», если щёлкнуть на ней правой мышью, то в контекстном меню недоступны команды «Копировать в папку» и «Переместить в папку», а есть просто «Отправить» и «Копировать».

Вносим в меню полезные дополнения.

Пуск->Выполнить-> regedit,

открывается реестр.

Здесь нам нужна ветка

HKEY_CLASSES_ROOTAllFilesystemObjectsshellexContextMenuHandlers

Щёлкаем на ContextMenuHandlers правой мышью и выбираем Создать->Раздел

название раздела должно быть таким.

{C2FBB630-2971-11D1-A18C-00C04FD75D13}

В контекстном меню становится доступна первая необходимая нам команда «Копировать в папку»

Точно также создаём ещё один раздел 

{C2FBB631-2971-11D1-A18C-00C04FD75D13}

Вот таким образом мы с вами добавили в контекстное меню две дополнительные команды, которые нам несомненно пригодятся.

 

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

Содержание

  1. Что потребуется для редактирования контекстных меню
  2. Смена владельца объекта
  3. Копирование и перемещение объектов
  4. Редактирование контекстных меню у типов файлов
  5. Редактирование контекст-меню отдельных файловых форматов

Что потребуется для редактирования контекстных меню

Все интересующие нас данные располагаются в системном реестре, а значит, нам потребуется соответствующий редактор, желательно более продвинутый, чем штатный Regedit.exe. Одним из таких продвинутых средств является «Registry Workshop» – более удобный и широкофункциональный редактор трудно себе представить.
Конечно, можно обойтись штатным средством, но лучше все же не полениться и поискать торрент раздачу с этой утилитой. Ищите русифицированную версию – будет легче работать.
Итак, будем считать, что вы уже скачали, установили и запустили «Workshop», либо воспользовались системным «Редактором Реестра». Разверните самую первую ветвь, имеющую наименование «HKEY_CLASSES_ROOT», так как все операции мы будем производить именно в ней.


Редактирование контекст-меню, общего для всех файловых форматов
Начнем по порядку – с самого первого раздела, у которого вместо нормального наименования стоит символ «*».

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

В данном родительском объекте, впрочем, как и в последующих, нам требуется дочерний раздел «shell» («оболочка»). Найдем его и выделим – в правой части окна отобразятся два подраздела, присутствующих здесь изначально, а также строка параметра «(По умолчанию)».


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

Системный Блокнот

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

  1. Создание нового дочернего раздела
    Сделав правый клик по строке «shell», выберите в раскрывшемся контекст-меню нужную строку, затем нажмите ее – новый подраздел создастся моментально.
  2. Ввод или изменение имени
    Сразу после создания нового пункта, название будет еще не определено (доступно для изменения). То есть, свое наименование можно вводить сразу. Однако если вы до этого переключитесь на другое окно, либо просто где-нибудь щелкните мышью, то неопределенное имя закрепится и его придется переименовывать. Название пункта лучше вводить латинскими буквами, но можно кириллицей, главное без пробелов. Например: «OpenWithNotepad».

  3. Установка значения параметра «(По умолчанию)»
    В правой части окна отображается основной параметр этого подраздела, который здесь играет роль «переводчика». То есть, его значение будет отображаться как текст команды в Проводнике. Если же оно не установлено, то отображаться будет оригинал имени. Соответственно, нам нужно ввести сюда внятную информацию на русском языке – кликните дважды по строке (ближе к началу) и, в открывшемся диалоге, введите какое-нибудь понятное значение. Например, «Открыть в Блокноте».

  4. Добавление вспомогательного параметра

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

    Сделайте правый клик по чистому пространству рабочей части окна, затем наведите курсор на фразу «Новый Параметр» – выдвинется подменю, где нужно выбрать атрибут «Строковый».


    Сразу же нужно ввести наименование «Icon» для нового параметра, а затем, вызвав двойным кликом диалог редактирования, – значение. Это путь к объекту, содержащему нужную нам иконку, плюс ее порядковый номер в списке ресурсов. Цифра 0 указывает на самую первую иконку – обычно она является «лицом» программы или утилиты. Порядковый номер ставится после запятой, без пробела. В целом же значение таково:
    C:WindowsSystem32notepad.exe,0

  5. Непосредственное создание командной ссылки
    Это самый главный этап, предыдущие операции ничего не значат без него. Нужно создать подраздел – все так же, как в пунктах 1 и 2 (см. выше), только родительским разделом здесь выступает «OpenWithNotepad», а названием – слово «command».
    Затем нужно установить значение его основного параметра (см. пункт 3). Это следующие данные:
    «C:WindowsSystem32notepad.exe» «%1«


    Здесь мы видим путь к Блокноту, действующий как ссылка (link), а после него – командный атрибут. Ссылка запускает приложение, а атрибут соотносит с ним выделенный документ. Если ссылка будет без атрибута, то приложение станет запускаться просто так, без документа, а вот совмещенные вместе, они выполняют то, что от них требуется. Оба составляющих разделены пробелом и заключены в прямые кавычки – это обязательное условие для обычных путей. То есть, тех, что начинаются с буквы диска, а не сразу с обусловленного системой наименования папки.
    В принципе, для данного случая возможен другой вариант командной ссылки (без кавычек): %SystemRoot%notepad.exe %1. Но такой вариант годится редко, поэтому лучше взять на вооружение обычную методику.
    Ну вот, одну новую строку в контекстное меню мы добавили.

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

Альтернативный текстовый редактор

Существует прекрасная замена системному блокноту – небольшая программка с широким функционалом «Notepad++». Если у вас ее до сих пор нет, скачайте обязательно. Редактор инсталлирования не требует, он портативный и его рабочая папка может располагаться где угодно – никакого значения это не имеет. Вот связь с ним мы и вставим для второго примера.
Используя прежнюю последовательность операций, создадим дочерний раздел для элемента «shell», затем присвоим ему наименование «OpenInNotepad++».
Почему «In», а не «With»? Потому, что названия сортируются в алфавитном порядке, а так как альтернативный Блокнот гораздо лучше системного и будет использоваться намного чаще, то желательно, чтобы его связующая строка была выше других.
Исходя из этого, вы можете управлять последовательностью строк списка. Можно вообще впереди наименований расставить цифры в нужном вам порядке – в контекстном меню их представители будут соблюдать заданную очередность.
Далее, как прежде вводим локализованную версию имени: «Открыть в Notepad++». При добавлении иконки, нужно учитывать, что ее адрес ведет к самой программе, а не библиотеке ресурсов.


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

Смена владельца объекта

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

  1. Как прежде, создаем дочерний раздел.
  2. Назовем его «runas2». Почему «2» – поймете чуть позже.
  3. Вписываем локализованный вариант имени – «Стать Владельцем» или что-нибудь аналогичное.
  4. Формируем параметр «REG_SZ», присваиваем ему название «Icon», затем прописываем значение – адрес какого-либо административного значка. Например: C:WindowsSystemResourcesimageres.dll.mun,1 или просто путь к какому-нибудь подходящему ICO-файлу.

  5. В ответвлении «runas2» образовываем подраздел «command» и вставляем следующее значение «по умолчанию»: cmd.exe /c takeown /f «%1» && icacls «%1» /grant *S-1-5-32-544:F

    Так как этот текст будет читаться системным модулем «Командная строка», то все пробелы, наклонные черты, кавычки и другие символы должны быть введены с абсолютной точностью. Иначе никакого толка не будет.

    Далее алгоритм меняется:

  6. Необходимо организовать еще один строковый параметр, именуемый «IsolatedCommand», и продублировать в нем предыдущее значение (по умолчанию).

  7. Надо вернуться на ступень выше и организовать еще два строковых параметра. Они не должны иметь значений, а лишь наименования: «HasLUAShield» и «NoWorkingDirectory».

    Несмотря на то, что данная опция должна присутствовать в контекст-меню всех файловых типов, на EXE-файлы, к сожалению, это не распространяется.

Поэтому придется осуществить еще несколько действий:

  • Надо произвести копирование всего подобъекта «runas2» – выделите его, затем нажмите клавиатурное сочетание «Ctrl+C».
  • Теперь, передвигая ползунок полосы прокрутки (скрулбара), отыщите и разверните ответвление реестра «exefile».
  • Выделите подраздел «shell» и активируйте сочетание «Ctrl+V».


Как видите, здесь уже имеется один пункт «runas», но так как название вставляемого нами элемента отличается наличием цифры 2, то никакого конфликта при вставке не возникает.
Все, теперь для EXE-файлов тоже существует возможность моментально сменить владельца.
Итак, с добавлением этой функции мы закончили, однако есть другие, очень полезные возможности Проводника, которые неплохо иметь во всплывающих меню не только файлов, но и других объектов.

Копирование и перемещение объектов

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


Согласитесь, что пользоваться этими функциями Проводника посредством ленты не слишком удобно – требуется много лишних движений мышью. Если согласны с этим мнением, найдите ответвление реестра «AllFilesystemObjects», который отвечает абсолютно за все объекты, встречающиеся в окнах системной оболочки, и разверните его.
Теперь, так как мы имеем дело с функциями Проводника, раскройте дочернее ответвление «shellex» (расшифровывается как «shell extentions» – «расширения оболочки»). Здесь вам потребуется подраздел «ContextMenuHandlers» (Операторы контекст-меню) – его тоже необходимо привести в развернутое состояние.
Далее действуйте следующим образом:

  • Сделайте правый клик по ответвлению «ContextMenuHandlers» и создайте новый раздел, именуемый «CopyTo»
  • Назначьте значением параметра по умолчанию идентификационный номер сервиса копирования: {C2FBB630-2971-11D1-A18C-00C04FD75D13}

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

  • Организуйте подпункт и назовите «MoveTo»
  • В качестве значения вставьте следующие данные: {C2FBB630-2971-11D1-A18C-00C04FD75D13}

Теперь, когда вы сделаете правый клик по любому файлу, список команд будет содержать все добавленные вами элементы. Они будут базовым набором, отображаемым независимо от файлового типа или формата.


Однако этого мало – можно со стопроцентной уверенностью утверждать, что для просмотра или редактирования различных файловых форматов и типов вы пользуетесь множеством программ, которые используете соответственно с разновидностью производимых работ. Поэтому далее мы рассмотрим способы добавления новых командных ссылок в меню файловых типов: текстовых документов, изображений, видеофайлов и аудиофайлов.

Редактирование контекстных меню у типов файлов

Данный метод основывается на таком системном потенциале, как ассоциация файловых форматов и типов с какими-либо программами. Соответственно, для дальнейших операций нам требуется раздел «SystemFileAssociations» – найдите это ответвление, выполните развертывание и прокрутите вложенный список почти до самого низа – интересующие нас подразделы располагаются там.

Текстовые файлы

Этому понятию соответствует тип «text». Его воплощением в реестре является одноименный раздел, который нам и требуется отредактировать.
Раскрыв подраздел «shell», можно смело удалить имеющиеся там элементы «edit» и «open», так как оба они отсылают документ в системный Блокнот, а командная ссылка на этот редактор у нас уже есть. Вообще непонятна логика мышления программистов «Microsoft», расположивших здесь два одинаковых ярлыка (хватило бы одного)!


Вставить же сюда свои пункты – дело стоящее. Предположим, у вас установлен офисный пакет программ «Libre», а параллельно с ним возможно «Microsoft Office». Также система имеет встроенный компонент «Wordpad». Для редактирования документов он не слишком-то удобен, но для быстрого просмотра хорош, так как запускается почти моментально, в отличие от приложений офисных пакетов. Для примера внедрим в реестр записи этих программ.

  1. Редактор документов «LibreOffice»
    Выполните начальные операции по созданию нового подраздела, вводу наименования и его локализации (пункты 1, 2 и 3 главы «Системный блокнот»). Не забудьте вместо слов «Notepad» и «Блокнот» проставить другое имя, например, «LibreWriter» или, чтобы было еще понятней, «LibWord».
    Прежде, чем выполнять операции пункта 4, необходимо скопировать адрес EXE-файла следующего приложения:
    1. Перейдите в директорию установки «LibreOffice»
    2. Далее в ее подпапку «program»
    3. Найдите и выделите swriter.exe (аналог редактора «Microsoft Word»)
    4. На вкладке ленты «Главная» щелкните по кнопке «Скопировать путь»
    I


    Теперь буфер обмена содержит адрес приложения «LibreOffice Writer», который вам потребуется вставлять во время реализации конечных операций (пункты 4, 5):
    • с цифрой 0 – для значения параметра «Icon»,
    • с атрибутом «%1» – в подразделе «command».

  2. Программа «Microsoft Word»
    Аналогичным способом делаются записи, касающиеся любых других приложений, разнятся лишь адреса исполняемых файлов.
    Простейший способ получить адрес данного редактора – вставить слово WINWORD.EXE в поле поиска Проводника, а когда результаты поиска будут готовы, выделить найденный объект и скопировать его путь.

    Совет! Если у вас несколько дисковых томов, а вы не помните, на каком из них установлен офисный пакет, поиск лучше производить из окна «Мой компьютер».

  3. Встроенный редактор «WordPad»
    Если вы не удаляли этот дополнительный компонент операционной системы и желаете пользоваться им чаще, то используйте во время добавления записей в реестр такой путь:
    C:Program FilesWindows NTAccessorieswordpad.exe

Отрицательные моменты и их нейтрализация

К сожалению не все текстовые форматы будут иметь в своих контекстных меню эти добавленные связи, а только те, что напрямую ассоциированы с данным типом. Кроме TXT-файлов сюда относятся INI, XML и некоторые другие.
Чтобы связать новые команды с другими форматами документов, нужно сделать то же, что мы делали с разделом «runas2», когда нужно было добавить функцию смены владельца для EXE-файлов (см. главу выше). Только на этот раз мы будем копировать/вставлять все ответвление «shell» (целиком). Итак:

  1. Выделите и скопируйте вышеназванный подобъект раздела «text».
  2. Прокручивайте дерево вверх, останавливаясь на тех расширениях, которые без проблем могут быть открыты в вышеупомянутых текстовых редакторах.
  3. Выделяйте эти разделы и вставляйте скопированный элемент.

Основные форматы, поддерживающие ассоциацию с добавленными приложениями, имеют расширения «.odt», «.rtf», «.doc» и «.docx».


Помимо этих разделов, можно вставить скопированные данные в «.htm», «.html», «.mht» плюс некоторые другие объекты, соответствующие веб-страницам. Однако тут есть нюансы, требующие отдельного разбора.

Веб-страницы

Для интернет-страниц нет специального файлового типа, поэтому, для модификации их контекстных меню необходимо использовать разделы форматов, находящиеся непосредственно в ветви «HKEY_CLASSES_ROOT», либо подобъекты раздела «SystemFileAssociations», одноименные расширениям.
Второй вариант удобней, тем более что мы уже реализовали здесь некоторые изменения. Осталось подкорректировать их еще чуть-чуть.
Дело в том, что приложения, которые мы только что добавили, более подходят для редактирования, а не для чтения. «Wordpad» и вовсе открывает интернет-документы как исходный код, а не как удобочитаемый текст с картинками. Значит, нужно присовокупить к ним командные ссылки удобных веб-браузеров, запускающихся быстро. Наверняка у вас такие есть.
Алгоритм действий вам уже знаком сполна – действуйте, организовывайте связи с имеющимися на вашем компьютере браузерами. Можете сначала присовокупить все, а затем, испытав их в действии, удалить те, что запускаются медленно или открывают страницы не совсем адекватно.

Пример:

Изображения

За этот тип отвечает раздел «image», а записи, присутствующие в его подразделе «shell», воспроизводятся контекстными меню распространенных растровых форматов изображений.
Внедрив сюда командные ссылки ваших графических редакторов и браузеров, вам станет очень удобно открывать картинки в любом из них. Также можно удалить отсюда «print», так как распечатывать изображения лучше из графических браузеров или редакторов – оттуда управление печатью намного функциональней.

Теперь, посмотрев на контекст-меню какого-нибудь графического файла, вы увидите, что там присутствуют пункты, которыми вы возможно никогда не пользуетесь. Это:

  • «3D Edit» – отправляет картинку в приложение «Paint 3D». Этой ссылкой пользуются считанные единицы пользователей и, скорее всего, вы не из их числа.
  • Команда системных Параметров, назначающая выбранную картинку обоями стола. Вряд ли вы меняете обои настолько часто, чтобы данный пункт «мозолил» глаза.
  • «Повернуть вправо» и «Повернуть влево». Эти команды лучше никогда не применять, если вы дорожите качеством своих фотографий, так как они реально поворачивают изображение (перестраивают растр), а не изменяют метаданные EXIF.

Без этих элементов работать с контекстным меню гораздо удобней, но, естественно, решать вам.


Если надумаете удалить их, то это придется делать для каждого расширения отдельно. То есть прокручивать дерево вверх, разворачивать нужные вам разделы, затем удалять из них подразделы «shell» и «shellex».

Видео и музыка

Таким же образом обрабатываются типы «video» и «audio», а также их распространенные расширения. Подробно останавливаться на этом не будем – думается, что и так все понятно. А вот о форматах стоит поговорить детально.

Редактирование контекст-меню отдельных файловых форматов

Для начала рассмотрим, чем отличаются друг от друга расширения и форматы. Как вы, наверное, уже заметили, одни названия разделов в ветви «HKEY_CLASSES_ROOT» начинаются с точки, другие – сразу с буквы или цифры. Те, что с точкой, соответствуют расширениям, остальные – разным элементам файловой системы, протоколам, но главным образом форматам.
Default-параметр раздела, название которого начинается с точки, закрепляет текущее расширение за определенным форматом. Чтобы было понятней, рассмотрим все на примере раздела «.dll». Значение основного параметра которого – «dllfile». Это имя раздела, с которым ассоциируется данное расширение и которое, по сути, является его форматом.


Мы не случайно выбрали для примера разделы, принадлежащие этой разновидности библиотек – попутно добавим сюда одну очень полезную запись. Это командная ссылка, отсылающая DLL-файл к серверу регистрации объектов:

  1. Перейдите в раздел «dllfile». Делается это очень легко – кликните правой клавишей по этому слову, затем нажмите третью строку выпавшего контекст-меню.

  2. Развернув данный элемент, вы заметите, что здесь отсутствует ответвление «shell». Поэтому надо его создать.
  3. Далее нужно сформировать подраздел «RegDLL» и ввести какой-нибудь понятный текст, такой как «Зарегистрировать Библиотеку».
  4. Затем сформируйте подобъект «command» и вставьте следующую информацию как содержимое default-параметра: «C:WindowsSystem32regsvr32.exe» «%1«


    Этот принцип поможет вам, если вы захотите подредактировать меню других форматов.

Как создать уникальные элементы и настроить контекстные меню своих рабочих систем под конкретные потребности

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

Настройки элементов контекстного меню

Как известно, каждый раз, когда пользователь щелкает правой кнопкой мыши по определенному объекту в графическом интерфейсе операционной системы, открывается контекстное меню, включающее в себя список команд, которые конечный пользователь может выбрать для выполнения того или иного действия. Такие команды также известны как элементы контекстного меню, или же глаголы (Verbs). При взаимодействии с объектами вы можете обнаружить как стандартные элементы меню (к которым относятся, например, команды «Вырезать», «Вставить», «Удалить»), так и специальные команды, к которым пользователь получает доступ при взаимодействии с определенными типами файлов (например, для медиафайлов это могут быть команды, связанные с воспроизведением, а для текстовых файлов — команды печати либо редактирования содержимого файла). Ввиду того что все типы файлов регистрируются в системном реестре операционной системы, если вы попробуете вызвать меню для незарегистрированного типа файла (например, *.abc123), вам будут предоставлены лишь стандартные элементы меню.

Обратите внимание на то, что каждая команда в контекстном меню должна быть идентифицирована в системном реестре при помощи определенного глагола, который в свою очередь используется функцией ShellExecuteEx для запуска конкретного приложения. Этот глагол представляет собой обыкновенную текстовую строку, используемую оболочкой Shell для идентификации связанной команды. Каждый такой глагол соответствует команде, запускаемой в командной строке консоли или пакетному файлу с расширением bat.

Как и в случае с использованием командной строки, если какой-либо элемент для добавляемого вами объекта контекстного меню содержит пробелы, он должен быть заключен в кавычки. В противном случае, если элемент содержит пробел, но не заключен в кавычки, он будет обрабатываться неправильно. Например, если указать в качестве пути к приложению, скажем, «New Application.exe», приложение будет выполнено корректно. Но если вы укажете в качестве пути New Application.exe без кавычек, то операционная система попытается запустить несуществующую программу New с Application.exe в качестве первого параметра. А ввиду того что имя выполняющегося процесса может быть не самым информативным (вспомним в качестве примера файл «powershell.exe» и его отображаемое имя «Windows PowerShell»), выполнить такую задачу не удастся. Кстати, глаголы могут еще включать в себя имя, которое будет отображаться уже в самом контекстном меню, так что эти имена также следует указывать в кавычках.

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

Эта процедура по умолчанию, в сущности, выполняет две основные задачи:

  • определение того, как приложение должно запускаться для открытия произвольного типа файла;
  • определение дополнительных уникальных характеристик для типа файла, к которым можно отнести элементы контекстного меню и ярлыки.

Вернемся теперь к настройкам элементов контекстного меню и рассмотрим, где в реестре размещаются параметры, отвечающие за эти элементы. Вся информация, которую операционная система Windows использует при работе с файлами, заключена в ветви реестра HKEY_CLASSES_ROOT. Другими словами, если вы в «Проводнике Windows» открываете какой-то документ, в этот момент операционная система Windows запускает программу, которая при помощи процедуры по умолчанию связана с этим документом. Информация о тех функциях системы, о которых говорилось выше, включая расширения файлов, их взаимодействие с программами, печать, значки для зарегистрированных типов документов и многое другое, хранится в ветви HKEY_CLASSES_ROOT.

Беглое изучение разделов этой ветви реестра показывает, что здесь можно найти практически все возможные типы файлов. Огромное количество типов файлов регистрируется в операционной системе в процессе установки. К таким типам файлов можно отнести JPG, DOCX и другие. В свою очередь, некоторые специальные типы файлов появятся в системном реестре только после установки соответствующих приложений. К таким типам файлов можно отнести, например, VSDX после установки продукта Microsoft Office Visio.

В ветви реестра HKEY_CLASSES_ROOT для каждого зарегистрированного типа файлов отведено два специальных раздела. Имя первого такого раздела совпадает с расширением файла (например,. mkv) и содержит идентификатор (в данном случае — WMP11.AssocFile.MKV). А вот уже в разделе WMP11.AssocFile.MKV вы найдете дополнительную информацию о выбранном типе файлов. К такой информации можно отнести определение этого типа файлов, его значок, действия, которые должны выполняться при его использовании и многое другое. Все эти нюансы мы рассмотрим ниже.

Помимо упомянутых двух разделов для редактирования различных пунктов контекстного меню, вам еще могут пригодиться следующие ключевые подразделы ветви HKEY_CLASSES_ROOT:

  • *. Этот подраздел отвечает за все файлы, хранящиеся на компьютере, причем независимо от того, зарегистрирован выбранный тип файла или нет.
  • AllFileSystemObjects. В этом разделе реестра хранится информация, связанная со всеми файлами и папками. По сути, если вы хотите внести изменения в эту категорию, то лучше всего изменять параметры именно в данном разделе.
  • Folder. Изменив содержимое этого раздела, вы сможете управлять пунктами контекстного меню для выбранной в проводнике папки.
  • Directory. В данном случае изменениям подвергнутся все файлы, находящиеся внутри открытой пользователем папки.
  • DirectoryBackground. Изменив содержимое этого раздела, вы сможете добавить, изменить или удалить пункты контекстного меню для фоновой области папки «Проводника Windows» (когда вы вызываете контекстное меню внутри какой-то папки, при этом не выделяя ни одного файла).
  • DesktopBackground. Здесь нам предоставляется возможность изменить контекстное меню для рабочего стола операционной системы Windows.
  • Drive. Если вы внесете изменения в реестр для этого подраздела, то ваши действия повлекут за собой изменения, связанные с дисками в «Проводнике Windows».
  • Network. Внутри данного раздела вы можете вносить изменения в контекстное меню объектов, связанных с сетевым окружением.
  • NetworkType#. Данные подразделы позволяют вам вносить изменения в объекты типа #, где «#» — это код типа сетевого провайдера, указанный в десятичном формате.
  • Printers. Здесь можно получить доступ к пунктам контекстного меню, связанного с принтерами.

Кроме того, можно выделить несколько канонических глаголов, которые вы найдете почти в каждом разделе Shell идентификатора типа файлов. К таким глаголам относятся:

  • Open. Элемент, отвечающий за открытие файла или папки.
  • Opennew. Открытие файла или папки в новом окне.
  • Print. Печать файла.
  • Explore. Открытие «Проводника Windows» для выбранной папки.
  • Find. Открытие диалогового окна системного поиска с папкой, заданной в качестве расположения поиска, установленного по умолчанию.
  • Openas. Отвечает за диалоговое окно «Открыть с помощью».
  • Properties. Открытие диалогового окна свойств выделенного объекта.

Создаем свой элемент контекстного меню

Итак, с теоретической частью мы закончили и теперь можем перейти к практическим шагам. Перед тем как создавать новые элементы контекстного меню, давайте разберем строение существующих. Для примера рассмотрим раздел «HKEY_CLASSES_ROOT.gif», который отвечает за файлы типа gif. При выборе указанного раздела в качестве значения параметра по умолчанию, как уже говорилось выше, можно обнаружить идентификатор — «giffile». К этому разделу и следует перейти для изменения и добавления различных параметров.

Выбрав раздел «HKEY_CLASSES_ROOTgiffile», вы сразу обратите внимание на значение этого раздела по умолчанию: оно представляет собой описание выбранного вами типа файлов — «GIF Image». Это означает, что данный идентификатор отвечает за изображения типа GIF. Также в корневом разделе идентификаторов присутствуют дополнительные параметры. Рассмотрим некоторые из них.

  • EditFlags. Представляет собой двоичное значение длиной в 4 байт, которое может применяться для того, чтобы пользователи не могли при помощи контекстного меню задействовать определенные команды для выбранных ассоциаций файлов. В некоторых случаях этот параметр реестра может быть как типа REG_DWORD, так и REG_BINARY. Также стоит обратить внимание на то, что данный параметр может присутствовать и в подразделах shell, предопределяя наложенные ограничения корневого параметра.
  • FriendlyTypeName. В этот параметр реестра записывается отображаемое имя для идентификатора. Таким образом, значение данного параметра должно содержать те же данные, что и запись по умолчанию. Эта запись может представляться типом REG_SZ или REG_EXPAND_SZ, но она обязательно должна быть отформатирована как косвенная строка (это полное имя файла и значение ресурса, которым предшествует символ @), например @%SystemRoot%System32shell32.dll,-30595, как в данном случае.

Поскольку GIF является зарегистрированным типом файлов, в основном разделе идентификатора вы можете найти раздел «DefaultIcon», в котором существует параметр @, отвечающий за расположение ярлыка, который будет сопоставляться выбранному типу файла, в данном случае GIF. Как правило, за системные значки файлов отвечает библиотека imageres.dll и данный случай — не исключение.

Следующий раздел, Shell, имеет, пожалуй, основное значение для нас. А считается он важнейшим из разделов этой категории по той причине, что операционная система именно отсюда вытягивает сведения о том, какие действия должны выполняться при двойном щелчке на выбранном файле данного типа или же других возможных операциях. Как правило, этот раздел включает в себя несколько глаголов. К стандартным глаголам можно отнести такие глаголы, как edit, open и print, что в графическом интерфейсе пользователя эквивалентно командам контекстного меню «Изменить», «Открыть» и «Печать». Каждый такой глагол должен включать подраздел command, в котором в параметре по умолчанию необходимо добавить команду, запускаемую из командной строки и определяющую выполняемое действие.

Более того, наряду с приложением, указанным в кавычках, необходимо использовать такой параметр, как «%1», например, как показано на экране 1; при работе с файлами gif на данном компьютере должен открыться Microsoft Internet Explorer. Что же означает эта единица? При запуске браузера Internet Explorer параметр %1 будет заменяться именем выбранного файла. Иными словами, когда пользователь попробует открыть файл funnygif.gif, который находится на диске D, операционная система запустит программу C:Program FilesInternet Exploreriexplore.exe с файлом D:funnygif.gif.

Значение команды «Открыть» для GIF-файлов
Экран 1. Значение команды «Открыть» для GIF-файлов

Если внимательно посмотреть на различные разделы для типов файлов, можно обнаружить, что помимо Shell, можно еще встретить такой раздел, как Shellex. А в чем разница между разделами Shell и Shellex? Здесь все просто. В случае с Shell вы можете применять статические глаголы, которые будут использоваться методом ShellExecute, а также контекстными меню для различных типов файлов. Как вы уже заметили, они достаточно просты в реализации, так как представляют собой, по сути, лишь определенную команду, выполняемую в командной строке. Однако в случае необходимости глаголы могут быть расширены дополнительными COM-объектами.

В свою очередь, раздел Shellex предназначен для управления расширениями shell, к которым как раз и относятся различные COM-объекты. Например, перейдя к разделу Drive, вы можете в разделе shellex найти такие подразделы как ContextMenuHandlers, Drag­DropHandlers, Folder­Extensions и PropertySheetHandlers, которые, собственно, и считаются расширениями для обычного раздела Shell.

Теперь перейдем непосредственно к созданию нового элемента контекстного меню. На примере я покажу, как можно добавить в контекстное меню папки пункт «Открыть Windows PowerShell здесь». Для того чтобы этот элемент был доступен при щелчке правой кнопкой мыши как по папке, так и по свободной фоновой области внутри папки, параметры реестра будут изменяться внутри уже существующих разделов Directory и DirectoryBackground. Обратите внимание, что в случае с изменением параметров внутри разделов Directory и Background вам необходимо сменить для этих разделов владельца и предоставить группе администраторов полные права на изменение содержимого внутри разделов PowerShell.

Это простой пример, поскольку контекстное меню папок уже обладает данным параметром, однако его можно вызвать только при помощи расширенного контекстного меню (в комбинации с нажатой клавишей Shift). За пункты из расширенного контекстного меню отвечает параметр «Extended», поэтому для решения данной задачи нам достаточно удалить текущий параметр из соответствующих разделов реестра, а все остальные параметры можно оставить без изменений. Содержимое файла reg будет выглядеть так, как показано в листинге 1.

Как мы видим на экране 2, теперь в контекстном меню появился соответствующий элемент.

Новый элемент контекстного меню
Экран 2. Новый элемент контекстного меню

Возьмем другой пример, предполагающий добавление новых разделов и параметров реестра — добавление пункта «Скрыть выделенные» в контекстное меню выбранного файла. При помощи этой функции можно скрыть все выбранные файлы одним лишь нажатием клавиши мыши из контекстного меню выделенных объектов. В данном случае нам понадобится вносить изменения в раздел AllFilesystemObjects, так как действия должны выполняться при выборе любого объекта проводника Windows. Кроме того, поскольку операция, можно сказать, штатная, для реализации этой задачи будет использоваться системная функция ShellExecute. Сразу обращаю ваше внимание на то, что ввиду применения функции ShellExecute, в данном разделе не создается подраздел Command.

Должны быть выполнены следующие операции:

  1. Внутри раздела HKEY_CLASSES_ROOTAllFilesystemObjectsshell создается дочерний раздел Windows.HideSelected.
  2. Добавляется строковый параметр «Description» со значением «@shell32.dll,-37575»;
  3. Добавляется строковый параметр «ExplorerCommandHandler» со значением «{0947c622-f98a-48a5-9df7-60e5fe202e07}».
  4. Добавляется строковый параметр «Icon» со значением «imageres.dll,-5314».
  5. Добавляется строковый параметр «MUIVerb» со значением «@shell32.dll,-37574».

Получаемый reg-файл будет выглядеть так, как показано в листинге 2.

На экране 3 видно, что нам дали выполненные изменения в реестре.

Элемент «Скрыть выбранные элементы» в контекстном меню при выборе файла
Экран 3. Элемент «Скрыть выбранные элементы» в контекстном меню при выборе файла

Как мы видим, в обоих примерах фигурировали две библиотеки: shell32.dll и imageres.dll. Первая библиотека включает в себя команды, выполняемые операционной системой (функция ShellExecute), а вторая представляет собой хранилище системных значков, которые можно ассоциировать с тем или иным элементом контекстного меню. По этой причине я рекомендую создать документ, описывающий возможности данных библиотек.

Добавляем элементы в контекстное меню средствами GPO

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

В следующем примере попробуем решить следующую задачу: добавить в контекстное меню для папок пункт открытия Windows PowerShell, а также пункт скрытия выбранных элементов. Выполним следующие шаги:

  1. Для начала откроем оснастку «Управление групповой политикой». В ней нужно создать новый или выбрать существующий объект групповой политики. Так как большинство изменяемых параметров реестра входит в раздел из «HKEY_CLASSES_ROOT», данный объект следует связать с подразделением, к которому относятся целевые компьютеры. Затем следует открыть для данного объекта редактор управления GPME. Так, в нашем примере создается объект GPO «Контекстные меню» и он привязывается ко всему домену. Открываем для этого объекта редактор политик.
  2. Поскольку для подраздела PowerShell из раздела реестра Directory необходимо сменить владельцев, для начала следует предоставить пользователям разрешения на изменение параметров в разделах реестра. Для этого переходим к разделу «Конфигурация компьютера»«Политики»«Конфигурация» Windows«Параметры безопасности»«Реестр». В области действий вызываем контекстное меню и выбираем пункт добавления раздела. В открывшемся диалоговом окне следует перейти к разделу реестра CLASSES_ROOTDirectoryshellPowershell. Далее в диалоговом окне дополнительных параметров безопасности в разделе изменений владельца выбирается группа безопасности, для которой будут предоставлены полные права (учтите, что предоставлять такие права для группы пользователей в большинстве случаев рискованно и распределять права следует с осторожностью). Включите флажок наследования. Кроме того, добавьте для выбранной группы разрешения, включающие полный доступ к разделу. В открывшемся диалоговом окне добавления проекта оставляем переключатель на режиме распространения наследуемых разрешений на все подразделы и вносим изменения. В случае добавления идентичных пунктов для свободного пространства «Проводника Windows» предоставьте соответствующие разрешения еще и для раздела DirectoryBackground.
  3. Теперь при помощи предпочтений групповой политики из раздела HKEY_CLASSES_ROOTDirectoryshellPowershell будет удаляться параметр «Extended». Для этого следует развернуть узел «Конфигурация компьютера», а затем перейти к узлу «Настройка»«Конфигурация Windows». Щелкните в области сведений правой кнопкой мыши и из контекстного меню последовательно выберите команды «Создать» и «Элемент реестра». Поскольку у нас будет удаляться параметр реестра, выберите из раскрывающегося списка «Действие» пункт «Удалить». В раскрывающемся списке «Куст» (Hive) выберите ветвь реестра «HKEY_CLASSES_ROOT». После этого при помощи браузера элементов реестра укажите параметр «Extended». Элемент предпочтения реестра готов. Можно сохранять изменения. Диалоговое окно элемента предпочтений групповой политики показано на экране 4.
  4. Теперь осталось создать раздел реестра с соответствующими параметрами для добавления в контекстное меню второго пункта. В принципе, так как требуется добавить четыре параметра, все эти действия можно выполнить при помощи элементов предпочтения реестра, но если операция предполагает добавление большого количества параметров, то можно воспользоваться возможностями сценариев автозагрузки. Для этого перейдите в раздел «Конфигурация компьютера»«Политики»«Конфигурация» Windows«Сценарии (запуск/завершение)» и откройте диалоговое окно свойств параметра политики «Автозагрузка». В диалоговом окне «Свойства: Автозагрузка» нажмите на кнопку «Добавить» и при помощи кнопки обзора поместите требуемый Reg-файл (например, файл AddHideItem.reg) в папку сценариев автозагрузки. После этого укажите в поле «Имя сценария» значение «regedit.exe», а в текстовом поле «Параметры сценария» значение «/s и имя файла», как показано на экране 5.
  5. После этого можно обновлять параметры политики на целевых компьютерах и проверять выполненные действия.
Создание элемента предпочтения реестра
Экран 4. Создание элемента предпочтения реестра
Добавление сценария автозагрузки
Экран 5. Добавление сценария автозагрузки

Теперь вы знаете, из каких компонентов состоят контекстные меню операционных систем Windows и как можно добавить в различные контекстные меню свои уникальные пункты. Мы рассмотрели основные подразделы реестра, отвечающие за пункты контекстных меню. На нескольких примерах были продемонстрированы методы добавления новых пунктов в контекстное меню как вручную, так и централизованно, при помощи групповой политики. Я надеюсь, что благодаря данной статье вы сможете с легкостью настроить контекстные меню своих рабочих систем под конкретные потребности.

Листинг 1. Пример содержимого реестра 

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTDirectoryshellPowershell]
@="@shell32.dll,-8508"
"Extended"=-
"NoWorkingDirectory"=""
"ShowBasedOnVelocityId"=dword:00639bc8
[HKEY_CLASSES_ROOTDirectoryshellPowershellcommand]
@="powershell.exe -noexit -command Set-Location -literalPath ‘%V’"
[HKEY_CLASSES_ROOTDirectoryBackgroundshellPowershell]
@="@shell32.dll,-8508"
"Extended"=-
"NoWorkingDirectory"=""
"ShowBasedOnVelocityId"=dword:00639bc8
[HKEY_CLASSES_ROOTDirectoryBackgroundshellPowershellcommand]
@="powershell.exe -noexit -command Set-Location -literalPath ‘%V’"

Листинг 2. Параметры реестра для добавления пункта «Скрыть выделенные» в контекстное меню 

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOTAllFilesystemObjectsshellWindows.HideSelected]
"Description"="@shell32.dll,-37575"
"ExplorerCommandHandler"="{0947 c622-f98 a-48 a5-9 df7-60 e5 fe202 e07}"
"Icon"="imageres.dll, —5314"
"MUIVerb"="@shell32.dll, —37574" 

Понравилась статья? Поделить с друзьями:
  • Как добавить нового пользователя в windows 7 при входе в систему
  • Как добавить команду в консоль windows
  • Как добавить команду в автозагрузку windows 10
  • Как добавить командную строку в контекстное меню windows 10
  • Как добавить нового пользователя в windows 10 через командную строку