Консультация № 183937
29.08.2011, 09:24
67.09 руб.
0 10 3
Здравствуйте, уважаемые эксперты! Прошу вас ответить на следующий вопрос: Как в Windows XP отредактировать контекстное меню ярлыков Рабочего стола, используя реестр?

Обсуждение

давно
Советник
3818
2147
29.08.2011, 11:32
общий
это ответ
Здравствуйте, Usiy3!
Редактирование подразумевает как создание, так и удаление пунктов. Для начала создание.

1. Открываем редактор реестра (Пуск - Выполнить - regedit - OK или используем сочетание кнопок Win + R(флажок + R) - regedit - OK или просто запускаем C:\Windows\regedit.exe). Создаем в разделе HKEY_CLASSES_ROOT\*\shell\ раздел с названием Вашей команды, а в нем создаем раздел command. В разделе command изменяем значение ключа По умолчанию на Вашу команду, см. скриншот >> .

2. Здесь же можно удалить лишние команды, если вопрос в этом.
Прикрепленные файлы:
Об авторе:
Правильно заданный вопрос должен содержать ответ!
Неизвестный
29.08.2011, 12:28
общий
это ответ
Здравствуйте, Usiy3!

Судя по всему, Вы знаете, как запускать редактор Реестра...
Если нет, то "Пуск"--> "Выполнить"---> regedit.exe
Нажав левой кнопкой "мыши" на основную корневую папку (первая, "Мой компьютер"), то есть как бы стать на начало. Затем Меню-->"Правка"--->"Найти..."-->ContextMenuHandlers.
Для того чтобы продолжить (следующее нахождение) нажимайте Кнопку "Найти далее" или если Вы отменили окно ввода строки поиска, то просто клавишу F3. Как видите этих разделов ContextMenuHandlers в Реестре много, в разных местах. Одни отвечают за контекстные меню системных программ (задач), другие - за установленных пользователем программ. К примеру, у Вас установлена программа 7-zip. В разделе Реестра HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers этой программе соответствует запись.
Имя Тип Значение
(По умолчанию) REG_SZ {23170F69-40C1-278A-1000-000100020000}.
Найдите такое же значение для нужной Вам программы, контекстное меню которой Вы хотите изменить, в том или ином разделе Реестра (HKEY_CLASSES_ROOT, HKEY_CURRENT_USER HKEY_LOCAL_MACHINE и т.д.). Затем снова "станьте на начало Реестра" (левой кнопкой "мыши" на основную корневую папку...). И найдите теперь строку Реестра именованную как найденное Вами значение. В случае 7-zip - это {23170F69-40C1-278A-1000-000100020000} - то самое значение параметра (По умолчанию), которое мы нашли выше. Понажимав строки (как правило,
строка с именем InprocServer32, для 7-zip
HKEY_CLASSES_ROOT\CLSID\{23170F69-40C1-278A-1000-000100020000}\InprocServer32),
в правом окне Вы увидите, какая программа (.dll- библиотека) соответствует (фактически используется для выведения определенной строки в контекстном меню). В нашем случае для 7-zip это
C:\Program Files\7-Zip\7-zip.dll
Вот такая строка ссылки на исполняемую библиотеку...
Ну а дальше, просмотрев файл библиотеки, как правило в формате Unicode и (или) задав поиск нужной Вам строки (подстроки) контекстного меню, которую Вы хотите изменить, Вы поймете, этот ли файл содержит строку контекстного меню для Рабочего стола, или нужно искать следующий.
А дальше сами решайте, захотите Вы редактировать этот двоичный файл (.dll) или нет. Во-первых, нужно найти программу, а во-вторых, большинство программ "не любят", когда кто-то меняет их код, содержание. Некоторые проверяют идентичность в процессе выполнения, а значит могут прекратить нормально функционировать...В принципе, автору этих строк когда-то удавалось менять не только контекстные меню, но и большинство меню, сообщений - переводить с английского языка на русский. В общем-то, сегодня тысячи тысяч программ таким образом "руссифицируются" и нормально работают.
Удачи!
5
давно
Посетитель
217391
3
29.08.2011, 20:21
общий
Спасибо всем экспертам за ответы, особенно Charlie.
Моя задача – удалить строки, соответствующие определённой программе, из контекстного меню. Все записи, относящиеся к этой программе, из разделов реестра:
HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\AllFilesystemObjects\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\Directory\Background\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\Directory\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\Drive\shellex\ContextMenuHandlers
HKEY_CLASSES_ROOT\Folder\shellex\ContextMenuHandlers

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\*\shellex\ContextMenuHandlers
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AllFilesystemObjects\shellex\ContextMenuHandlers
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\Background\shellex\ContextMenuHandlers
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Directory\shellex\ContextMenuHandlers
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Drive\shellex\ContextMenuHandlers
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Folder\shellex\ContextMenuHandler
- удалил.
Теперь только осталась строка, относящаяся к этой программе, в контекстном меню ярлыков на Рабочем столе. Как её удалить? Файлы .dll изменять не желательно.
!!! Во всех перечисленных выше ветвях реестра в разделе shell упоминаний об этой программе нет.
Неизвестный
29.08.2011, 22:23
общий
Адресаты:
Господи помилуй!
Разве я советовал удалять все ветки ContextMenuHandler?
Я вообще не представляю, что будет при этом с системой!!!
Может быть, Вы все-таки удалили отдельные параметры этих разделов, а не сами разделы полностью? Очень надеюсь... Параметры, касающиеся системных программ, строчек контекстных меню системных программ, удалять, на мой взгляд, не следует (если, о господи, это вообще возможно).
Простите, но вопрос стоял, как отредактировать контекстное меню ярлыков, а не удалить строчки, не говоря уже о меню в целом!
Ну раз уж Вы это сделали, и это то, что Вам нужно, можно попробовать убить и последнюю строку контекстных меню, касающуюся Вашем таинственной программы... Ну, во -первых, в настройках смой программы может быть опция отключения встраивания в меню Проводника. То есть убрать строку этой программы из контекстного меню можно этой опцией. Во-вторых, можно попытаться найти файл, отвечающий или содержащий строку, выводимую в контекстное меню этой программой обычным поиском подстроки во всех файлах в папке Вашей программы, иных папках, куда помещаются файлы этой программы при установке... Узнать, в какие папки, помещаются файлы этой программы можно программами-анинстоллерами (Advanced Uninstaller, Ashampoo Uninstaller, Full Uninstall, Total Uninstall, Your Uninstaller и т.п.), которые отслеживают, "куда что записалось" и при "откате" ("чистой", "полной" дезинсталляции) показывают, что именно из установленного и откуда удаляется. Большинство из этих и ряда других программ (Magic Utilities, возможно TuneUp Utilities, Super Utilities (давно не ставил и не помню) и т.п.) позволяют делать так называемых "снимки" (snapshots) Реестра и системы, сравнивая которые можно посмотреть, куда, что установилось при инсталляции программы... А файловый посик можно выполнить любым файловым менеджером (Проводник, Total Commander, Far Manager и т.п.), сменив в просмотре кодировку на unicode (если ни в одном файле не найдется интересующая Вас подстрока из контекстного меню). Можно и другие кодировки попробовать... Узнав, в каком файле находится интересующая Вас подстрока контекстного меню, осуществить поиск ссылок на этот файл в Реестре. Ну и, находя, удалять строки, думая... Ох, как это непросто... Опытному пользователю может оказаться понятно, какие строки можно удалять, а какие нет... Дело в том, что подпрограмма, библиотека, в которой Вы найдете подстроку, может использоваться программой не только для вывода строки контекстного меню...Тогда удаление может привести к неработоспособности программы... Смотря о какой программе речь...В случае чего можно и переустановить...если вдруг прекратила работать вовсе...3-й способ - это распаковка саморазархивирующегося-архива-дистрибутива программы. Любой дистрибутив, как правило либо архив .zip, .rar или саморазархивирующийся (при установке) архив .exe. Большинство современных файловых менеджеров позволяют "входить" в архивы .exe, как в папки (Total Commander, Far Manager и пр.), разархивировать, не устанавливая программу. Ну а дальше искать в файлах, как во втором варианте. Кстати, по содержимому специальных файлов в таких архивах можно определить, куда программа при установке "раскладывает свои подпрограммы, файлы, библиотеки.
4-й вариант - поискать подстроку контекстного меню, которую Вы хотите удалить, причем сначала полностью, а если не найдется, то по возможности уникальную подстроку этой строки, в Реестре - хорошо, если таких "подстрок" не окажется тысячи...Замучаетесь F3 нажимать...
5-й вариант - сообщить, о какой программе речь.
Скажу честно, сам никогда строки контекстного меню на ВСЕХ ярлыках не "убивал"...
Я думал речь идет об изменении содержания строк...а не об удалении их полностью...не об удалении фактически полностью всех контекстных меню...на рабочем столе...
давно
Посетитель
217391
3
30.08.2011, 06:28
общий
30.08.2011, 07:07
Здравствуйте!
Уважаемый, Charlie, не волнуйтесь Вы так. Не удалял я все ветви ContextMenuHandler. А удалил параметры, относящиеся к Advanced SystemCare 4, предварительно экспортировав удаляемые параметры. Теперь осталась строка, относящаяся к этой программе, только в контекстном меню ярлыков. В настройках самой проги, эта строка контекстного меню так же не удаляется.
Файлы .dll мне трогать не хочется.
Конечно, убирается эта строка контекстного меню при помощи программы FileMenuTools. Но мне хотелось бы, если это возможно, через реестр, чтобы не устанавливать лишней проги.
Неизвестный
30.08.2011, 17:21
общий
Адресаты:
Значит так...
Дистрибутив скачал, покопался.. Ставить не хочется - программа не из простых, файлов много... Виртуальных дисков (систем) нет...
Во-первых, посмотрите здесь http://www.win7daily.com/windows/2387
в частности в связи с параметром в Реестре ShellMenuView.
Возможно сначала нужно в Реестре искать ветки, касающиеся Iobit (разработчик программы).
В частности, в установочном скрипте (файле) install_script.iss такая ветка Реестра.
HKLM\SOFTWARE\IObit\Advanced SystemCare 4
Во-вторых, эта программа сама настраивает контекстные меню. Может и свое может...
В-третьих, скорее всего в корневой папке установки будет файл main.ini, в котором есть секция:
[ContextMenu]
File Undelete=1
File Shredder=1
Fix Shortcut=1
Sweep Privacy=1
System Control=1
System Information=1
Repair Disk=1
Clean Disk=1
Defrag Disk=1
Space Analysis=1
Open File Location=1
Попробуйте вместо "1" поставить "0"

В-четвертых, в файле Russian.lng этой программы есть секции:
[IEHelper_FormMain]
FormMain.Caption=Помощник IE
Label_Product_Name.Caption=Помощник IE
Label_Product_Description.Caption=Управление дополнениями Internet Explorer и контекстным меню системы. Восстановление случайно изменённых настроек.
RzGroupContextMenu.Caption=Контекстное меню
RzGroupContextMenu.Items[0].Caption=Расширения Shell
RzGroupContextMenu.Items[1].Caption=Новые
RzGroupContextMenu.Items[2].Caption=Отправить в
RzGroupIEHelper.Caption=Помощник IE
RzGroupIEHelper.Items[0].Caption=Контекстное меню IE
RzGroupIEHelper.Items[1].Caption=Панели IE
RzGroupIEHelper.Items[2].Caption=Панели инструментов IE
RzGroupIEHelper.Items[3].Caption=Дополнительная кнопка IE
RzGroupIEHelper.Items[4].Caption=IE BHOs
RzGroupIEHelper.Items[5].Caption=Загрузка ActiveX IE
RzGroupIEHelper.Items[6].Caption=Настройки IE
Label_Menu.Caption=Контекстное меню
Label_IE.Caption=Помощник IE
lvActive.columns[0].Caption=Имя
lvActive.columns[1].Caption=Издатель
lvActive.columns[2].Caption=Путь к файлу
btnDAPPT.Caption=Свойства
btnDARmv.Caption=Переместить
lvBar.columns[0].Caption=Имя
lvBar.columns[1].Caption=Издатель
lvBar.columns[2].Caption=Путь к файлу
btnExpBarPPT.Caption=Свойства
btnExpBarRmv.Caption=Переместить
lvBHO.columns[0].Caption=Имя
lvBHO.columns[1].Caption=Издатель
lvBHO.columns[2].Caption=Путь к файлу
btnBHOPPT.Caption=Свойства
btnBHORmv.Caption=Переместить
lvMenu.columns[0].Caption=Имя
lvMenu.columns[1].Caption=Путь к файлу
btnCMRmv.Caption=Переместить
lvButton.columns[0].Caption=Имя
lvButton.columns[1].Caption=Команда
btnExBtnRmv.Caption=Переместить
lvHijack.columns[0].Caption=Имя
lvHijack.columns[1].Caption=Текущие настройки
chkBoxAll.Caption=Выбрать всё
Button_Modify.Caption=Изменить настройки
Button_Restore.Caption=Настройки по умолчанию
lvTool.columns[0].Caption=Имя
lvTool.columns[1].Caption=Издатель
lvTool.columns[2].Caption=Путь к файлу
btnTlbarPPT.Caption=Свойства
btnTlbarRmv.Caption=Переместить
lvNewList.columns[0].Caption=Тип
btnNewRmv.Caption=Переместить
lvSendList.columns[0].Caption=Тип
btnstRmv.Caption=Переместить
lvShellList.columns[0].Caption=Тип
lvShellList.columns[1].Caption=Название
btnSEKey.Caption=Открыть в Regedit
btnSERmv.Caption=Переместить
btnClose.Caption=Закрыть

[IEHelper_M]
M_Select_None=Ни один пункт не выбран.
M_Warning=Внимание
M_Remove_Success=Перемещено успешно!
M_Remove_Warning=Вы уверены,что хотите удалить "%s"
M_Unable_Delete_File=Не удаётся удалить файл
M_Restore_Success=Восстановлено успешно!
M_Nonexist_Path=Несуществующий путь к файлу
M_Operation_Fail=Эта операция не может быть завершена.
M_Access_Denied=Отказано в доступе.
M_Restore=Вы уверены,что хотите восстановить выбранное?
M_Confirm=Подтвердить
M_All_File=Все файлы
M_Shell=Очистить
M_ContextMenu=Контекстное меню
M_Recyclebin=Корзина
M_Directory=Каталоги
M_Folder=Папка
M_Drive=Диск
M_All_User=Все пользователи
M_Start_Page=Стартовая страница
M_Search_Page=Страница поиска
M_Default_Page=Страница URL по умолчанию
M_Local_Page=Домашняя страница
M_Search_Bar=Панель поиска
M_Default_Search=Поисковик URL по умолчанию
M_Customize_Search=Настроить поиск
M_Search_Assistant=Помощник поиска
M_Search_URL=Поисковик URL
M_Blank_Page=Пустая страница
M_Desktop_Nav_Fail=Отказ в навигации
M_Nav_Cancel=Навигация отменена
M_Nav_Fail=Навигация не возможна
M_Offline_Info=Offline информация
M_Post_Not_Cached=Сообщение не кэшируются

Особенно интересно вот это:
Label_Product_Description.Caption=Управление дополнениями Internet Explorer и контекстным меню системы. Восстановление случайно изменённых настроек.

Что-то мне подсказывает, что в Реестре нужно искать вот эти файлы (в зависимости от того, 32 или 64-разрядная система у Вас установлена:
28.05.2011 14:47 109 968 ASCv4ComputerMenu_64_new.dll
28.05.2011 14:47 101 264 ASCv4ComputerMenu_new.dll
28.05.2011 14:47 140 688 ASCv4ExtMenu_64_new.dll
28.05.2011 14:47 127 376 ASCv4ExtMenu_new.dll
Попробуйте...
Неизвестный
30.08.2011, 17:28
общий
Адресаты:
Да... Напишите, пожалуйста, какие строки у Вас в контекстном меню. Вот их и нужно искать в файлах дистрибутива или установленной программы. И если эти строки находятся не в .DLL или .exe (условно) напрямую, а, например, в .lng, то есть .dll или .exe которые ссылаются на соответствующие поименованные секции этих .lng. Вот эти-то .dll или .exe и нужно искать в Реестре...А может все проще решится, когда зайдете в ветку Iobit в Реестре....
давно
Посетитель
217391
3
31.08.2011, 05:55
общий
Здравствуйте!
Спасибо всем экспертам принявшим участие в дискуссии. Отдельное спасибо, Charlie.
Решение задачки удалось найти. Удалил параметр Advanced SystemCare в ветке реестра HKEY_CLASSES_ROOT\lnkfile\shellex\ContextMenuHandlers\.
Форма ответа