Как добавить элемент контекстного меню в проводник Windows для папок

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

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

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

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

Ответ 1

Контекстное меню для щелкните правой кнопкой мыши по папкам в левой панели проводника Windows или на фоне каталога на правой панели:

  • HKEY_CLASSES_ROOT\Directory\Background\shell, если вы являетесь администратором
  • HKEY_CURRENT_USER\Software\Classes\directory\Background\shell, если вы обычный пользователь

Контекстное меню для правого клика по папкам на правой панели проводника Windows:

  • HKEY_CLASSES_ROOT\Directory\shell, если вы являетесь администратором
  • HKEY_CURRENT_USER\Software\Classes\directory\shell, если вы обычный пользователь

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

  • HKEY_CLASSES_ROOT\*\shell, если вы являетесь администратором
  • HKEY_CURRENT_USER\Software\Classes\*\shell, если вы обычный пользователь

Во всех случаях:

  • добавить новый ключ в "shell", называя его, как вы хотите назвать пункт контекстного меню
  • добавьте новый ключ внутри этого ключа с именем команда (обязательное имя)
  • отредактировать свойство default по умолчанию в команде myprogrampath\path\path\executable.exe% 1, чтобы передать путь к файлу и имя выбранного файла в пользовательскую программу

Дополнительная настройка:

  • Добавить значок: добавляет строковое значение с именем icon для ключа, созданного на шаге 1, со значением, соответствующим пути ресурса значка. Вы также можете указать целочисленные аргументы, чтобы указать, какой значок использовать. Пример: %SystemRoot%\System32\shell32.dll,3
  • Отображать только при щелчке стрелки: добавляет пустую строку с именем Extended для ключа, созданного на шаге 1
  • Настроить метку ввода меню: изменить значение значения по умолчанию для ключа, созданного на шаге 1
  • Изменить местоположение записи в меню: добавляет строковое значение с именем Position с одним из: Top, Bottom

Ответ 2

Я нашел решение в следующей статье, в котором описано, как это сделать через реестр для файлов, а также для папок:

Следующие две статьи предоставили дополнительную информацию и варианты:

Ответ 3

Я вернулся и также ответил на это в другой теме, поскольку, похоже, этого вопроса явно нет.

Я нашел самый простой способ добавить значение String к ключу под названием "AppliesTo" и установить его значение "under: {path}"

В моем примере я хочу, чтобы он смотрел только на T Drive, поэтому мое значение String - "AppliesTo": "under: T:".

В С# это легко выполнить со следующим:

RegistryKey _key = Registry.ClassesRoot.OpenSubKey("Folder\\Shell", true);
RegistryKey newkey = _key.CreateSubKey("My Menu Item");
newkey.SetValue("AppliesTo", "under:T:");

RegistryKey subNewkey = newkey.CreateSubKey("Command");
subNewkey.SetValue("", "C:\\yourApplication.exe");
subNewkey.Close();

newkey.Close();
_key.Close();

Ответ 4

Единственное хорошее решение, которое я нашел действительно работающим, это: https://superuser.com/questions/1097054/shell-context-menu-registry-extension-doesnt-work-when-default-program-is-other

Добавьте ключи в HKEY_CLASSES_ROOT\SystemFileAssociations\your.extension\shell\command Измените последний ключ с помощью команды, которую вы хотите выполнить.

Для моей цели это было:

"C:\Program Files (x86)\GPSBabel\gpsbabel.exe" -r -i gpx -f "%1" -x simplify,count=1000 -o gpx -F "%1.gpx"

Если я экспортирую это, я получаю .reg:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\SystemFileAssociations\.gpx\shell\Simplify gpx\command]
@="\"C:\\Program Files (x86)\\GPSBabel\\gpsbabel.exe\" -r -i gpx -f \"%1\" -x simplify,count=1000 -o gpx -F \"%1.gpx\""

Ответ 5

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

Windows Registry Editor Version 5.00

; Setup context menu item for click on right panel:
[HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; HKEY_CURRENT_USER\Software\Classes\directory\Background\shell\MenuItemNameBackground]
;"position"="Bottom"

; -------------------------------------------------------------------------------------

; Setup context menu item for click on folders tree item:
[HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel\command]
@="C:\\yourpath\\executable.exe \"%1\""

; Optional: specify an icon for the item:   
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"icon"="C:\\yourpath\\appicon.ico"

; Optional: specify a position in the menu
; [HKEY_CURRENT_USER\Software\Classes\directory\shell\MenuItemNamePanel]
;"position"="Top"

Таким образом, вы также можете создать резервную копию своей конфигурации: просто сохраните файл .reg в безопасном месте. Если вы вручную редактируете реестр после запуска файла, щелкните правой кнопкой мыши и выберите "экспорт".

Остерегайтесь двойного возврата в пути:\\