Интеграция в контекстное меню Windows Explorer - PullRequest
36 голосов
/ 03 декабря 2009

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

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

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

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

Мои вопросы:

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

Ответы [ 2 ]

25 голосов
/ 03 декабря 2009

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

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

Редактировать: здесь есть еще одна статья , которая может помочь.

3 голосов
/ 03 декабря 2009

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

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

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

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

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