Пример. Нужно чтобы при наведении на папку или устройство (диск) в контекстном меню появился пункт Открыть с помощью бла-бла-бла. Наш файловый менеджер имеет следующие параметры:
Строка в меню: TotalComander123456789
Файл запуска: C:\Program Files\Total Commander GP Lite\TOTALCMD.EXE
Решение. Создаём файл реестра:
Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Directory\Shell\TotalComander123456789]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Directory\Shell\TotalComander123456789\Command]
@="\"C:\\Program Files\\Total Commander GP Lite\\TOTALCMD.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Drive\Shell\TotalComander123456789]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Drive\Shell\TotalComander123456789\Command]
@="\"C:\\Program Files\\Total Commander GP Lite\\TOTALCMD.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Directory\Shell\TotalComander123456789]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Directory\Shell\TotalComander123456789\Command]
@="\"C:\\Program Files\\Total Commander GP Lite\\TOTALCMD.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Drive\Shell\TotalComander123456789]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Drive\Shell\TotalComander123456789\Command]
@="\"C:\\Program Files\\Total Commander GP Lite\\TOTALCMD.EXE\" \"%1\""
Обратите внимание на двойные слеши (C:\\Program Files\\Total Commander...) в указании пути файла запуска. Название в меню должно быть латиницей и без пробелов. Это не очень удобно, всё-таки это название ветки реестра, зато так можно делать с любым файловым менеджером. Следует иметь в виду, что если захотите поменять запись в контекстном меню и просто измЕните название в файле реестра (в данном примере - TotalComander123456789), то при запуске этого файла реестра старая запись останется в контекстном меню. Для её удаления понадобится свой файл реестра по этому образцу:
Windows Registry Editor Version 5.00
[-HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Directory\Shell\TotalComander123456789]
[-HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Drive\Shell\TotalComander123456789]
[-HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Directory\Shell\TotalComander123456789]
[-HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Drive\Shell\TotalComander123456789]
Указанный файл реестра запускается не всегда, выкладываю обновлённый.
Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500\Software\Classes\Directory]
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500\Software\Classes\Directory\Shell]
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500\Software\Classes\Directory\Shell\TotalComander123456789]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500\Software\Classes\Directory\Shell\TotalComander123456789\Command]
@="\"C:\\Program Files\\Total Commander GP Lite\\TOTALCMD.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500\Software\Classes\Drive]
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500\Software\Classes\Drive\Shell]
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500\Software\Classes\Drive\Shell\TotalComander123456789]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500\Software\Classes\Drive\Shell\TotalComander123456789\Command]
@="\"C:\\Program Files\\Total Commander GP Lite\\TOTALCMD.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500_Classes\Directory\Shell\TotalComander123456789]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500_Classes\Directory\Shell\TotalComander123456789\Command]
@="\"C:\\Program Files\\Total Commander GP Lite\\TOTALCMD.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500_Classes\Drive\Shell\TotalComander123456789]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1960408961-1972579041-682003330-500_Classes\Drive\Shell\TotalComander123456789\Command]
@="\"C:\\Program Files\\Total Commander GP Lite\\TOTALCMD.EXE\" \"%1\""
Следует учитывать, что в каждом компьютере даже на установленных одинаковых системах параметры пользователя разные (в данном разделе реестра). В указанном примере следует заменить (через Блокнот) набор символов:
S-1-5-21-1960408961-1972579041-682003330-500
на другой
S-1-5-21-**********-**********-*********-***
который можно найти у себя в реестре по адресу (самая первая запись):
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\S-1-5-21-**********-**********-*********-***]
Сообщение добавлено спустя 31 мин. 25 сек.
Ради интереса попробуйте сделать такое с WinRAR-ом. Работает!!!
::)
Windows Registry Editor Version 5.00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Directory]
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Directory\Shell]
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Directory\Shell\WinRAR]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Directory\Shell\WinRAR\Command]
@="\"C:\\Program Files\\WinRAR\\WinRAR.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Drive]
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Drive\Shell]
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Drive\Shell\WinRAR]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Drive\Shell\WinRAR\Command]
@="\"C:\\Program Files\\WinRAR\\WinRAR.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Directory\Shell\WinRAR]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Directory\Shell\WinRAR\Command]
@="\"C:\\Program Files\\WinRAR\\WinRAR.EXE\" \"%1\""
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Drive\Shell\WinRAR]
"EditFlags"=hex:01,00,00,00
[HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Drive\Shell\WinRAR\Command]
@="\"C:\\Program Files\\WinRAR\\WinRAR.EXE\" \"%1\""
Сообщение добавлено спустя 37 мин. 26 сек.
Удаление WinRAR из конт. меню:
Windows Registry Editor Version 5.00
[-HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Directory\Shell\WinRAR]
[-HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500\Software\Classes\Drive\Shell\WinRAR]
[-HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Directory\Shell\WinRAR]
[-HKEY_USERS\S-1-5-21-1078081533-1844237615-1417001333-500_Classes\Drive\Shell\WinRAR]
Найдено более простое решение. Достоинством такого подхода является возможность "вшивания" в дистрибутив WINDOWS.
1. Создаём коммандный файл *.cmd, который прописывает путь к файлу запуска и рабочую папку, делая своего рода регистрацию программы. В нашем случае это Total Commander, теперь система "знает" его как totalcmd777
@echo off
rem totalcmd777
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\totalcmd777.exe" /ve /d "%PROGRAMFILES%\Total Commander GP Lite\Totalcmd.exe" /f >nul
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\totalcmd777.exe" /v Path /d "%PROGRAMFILES%\Total Commander GP Lite" /f >nul
Теперь если ввести: Пуск - Выполнить - totalcmd777 %WINDIR% , наш командер откроет папку WINDOWS на системном диске. При этом неважно какую букву имеет системный диск, это определяется автоматом. В этом методе буква системного диска не упоминается нигде, что позволяет при установке системы закидывать любой файловый менеджер в дистрибутив и прописывать его в контекстном меню.
2. Создаём файл реестра, в котором указываем totalcmd777 как самостоятельную программу, и текст который будет виден в контекстном меню:
Windows Registry Editor Version 5.00
; Открывание папок
[HKEY_CLASSES_ROOT\Directory\Shell\Открыть папку в TotalComander]
"EditFlags"=hex:01,00,00,00
[HKEY_CLASSES_ROOT\Directory\Shell\Открыть папку в TotalComander\Command]
@="\"totalcmd777\" \"%1\""
; Открывание дисков
[HKEY_CLASSES_ROOT\Drive\Shell\Открыть устройство в TotalComander]
"EditFlags"=hex:01,00,00,00
[HKEY_CLASSES_ROOT\Drive\Shell\Открыть устройство в TotalComander\Command]
@="\"totalcmd777\" \"%1\""
; Открывание файлов (архивы и пр..)
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\Open in TotalComander]
@="Открыть файл в TotalComander"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shell\Open in TotalComander\command]
@="\"totalcmd777\" \"%1\""
Следует учитывать, что русский шрифт корректно воспринимается системой только в кодировке ОЕМ866, старые версии Notepad++ её не поддерживают. В свою очередь очень удобен в этом плане Alke Pad.