Как добавить элемент контекстного меню в проводник 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 в безопасном месте. Если вы вручную редактируете реестр после запуска файла, щелкните правой кнопкой мыши и выберите "экспорт".
Остерегайтесь двойного возврата в пути:\\