Подтвердить что ты не робот

Интеграция в контекстное меню проводника Windows

Я хочу написать небольшой инструмент, который делает следующее:

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

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

Я хотел бы использовать для этого С#/.NET 2.0. Если это невозможно, я мог бы также сделать это с С++/Win32.

Мои вопросы:

  • Возможно ли это с С#.NET 2.0?
  • Каковы необходимые функции для интеграции в контекстное меню проводника Windows?
  • Как я могу сделать это постоянным? (Я не хочу перезапускать этот инструмент после каждой загрузки)
  • Чему я должен заботиться? (разные ОС, разрешения безопасности и т.д.).
4b9b3361

Ответ 1

Вам нужно будет получить доступ к реестру и добавить ключ в root\\File\\shell или root\Folder\\shell, в зависимости от того, какие элементы вы хотите видеть в меню.

Попробуйте эту статью в CodeProject, это очень полезно.

Изменить: там другая статья здесь, которая может быть полезной.

Ответ 2

Все, что вам нужно сделать, это добавить некоторые вещи в реестр. Так что да, вы можете сделать это с помощью .NET 2.0. Вот пример того, как добавить Edit с помощью Notepad.

% 1 - это выбранный файл, если я правильно помню.

Ответ 3

Это, кстати, не поддерживается для использования .NET для расширений оболочки из-за текущей неспособности размещать несколько версий среды выполнения в одном и том же процессе (.NET 4 поднимет это ограничение).

Рассмотрим случай, когда у вас есть два расширения оболочки; один для .NET 3.5, один для .NET 1. Какая среда выполнения будет загружена в ваш процесс? Ну, это более или менее случайное - это зависит от того, какое расширение оболочки загружается первым. Иногда это может быть среда выполнения 2.0, иногда это может быть время выполнения 1.1.

Это также проблема, если .NET-программа создает общие диалоги файлов; расширение вашей оболочки может или не может загружаться и может работать или не работать с правильной версией времени выполнения.

Таким образом, если вы спуститесь на маршрут расширения оболочки, вы должны использовать собственный С++/COM/Win32.