Многие сталкивались с порно баннерами, блокирующими экран, кому то необходимо прописать запуск программ без полной загрузки системы, а кто то просто хочет самостоятельно проверить компьютер на наличие разных лишних программ в автозапуске, которые сразу и не видны. Этому и посвящена статья ниже.
Утилита системной конфигурации MSConfig.exe
Начиная с Windows версии 98, Microsoft поставляет утилиту «MSConfig.exe», предоставляющую удобный интерфейс для управления файлами, запускающимися при загрузке Windows. Она находится в каталоге установки Windows. Ее можно запустить из диалогового окна «Выполнить». В ней нет возможности добавлять новый элемент с именем приложения или документа для автозапуска, но можно отключать, не удаляя, любой пункт из находящихся в списках. Есть еще одна интересная возможность — проверка правильности пути, соответствующего элементу автозапуска, и удаление из списков элементов, пути к которым не верны. Возможности этого приложение достаточно убогие и годятся для пользователей системы, но никак не для администраторов. Далее в статье я, по необходимости, буду ссылаться на эту утилиту.
Автозапуск из файлов инициализации
Изложение мест автозапуска будет вестись в хронологическом порядке, начиная с первых версий Windows и устаревших технологий. Файлы инициализации достались в наследство от 16-битных версий Windows 3.x. Microsoft несколько раз декларировала, что она избавляется от устаревших файлов, но на самом деле они до сих пор обрабатываются при запуске.
В файле «Win.ini» в разделе «[windows]» есть два параметра, которые могут служить местом для автозапуска. Первый параметр это «load», второй — это «run». Содержимое по умолчанию для них — это пустая строка. Имена файлов в них не должны содержать пробелов, указание полного имени файла в двойных кавычках не допускается. В них можно перечислить несколько имен файлов через запятую. Обычно они используются для загрузки драйверов, но могут загружать «троянских коней» или «клавиатурных шпионов».
Еще один файл инициализации, который может быть использован для автоматического запуска программ, — это файл «System.ini». В этом файле в разделе «[boot]» есть параметр «shell», который хранит имя оболочки Windows. Значение по умолчанию этого параметра — «Explorer.exe». Значение «shell» может содержать список приложений для автоматического запуска как параметры командной строки «Explorer.exe». Приложение «Explorer.exe» обрабатывает командную строку и пытается запускать приложения или документы, перечисленные в командной строке. Требования к формату параметра «shell» такие же, как и у вышеупомянутых параметров файла «Win.ini». В последнее время этот параметр начал широко использоваться для запуска сетевых червей. Это делает локализацию трудно обнаруживаемой, т.к. администраторы забывают просматривать этот параметр как место для запуска деструктивных приложений.
Утилита «MSConfig.exe» позволяет просматривать состояние и редактировать содержимое этих трех параметров: «load», «run», «shell», находящихся в файлах инициализации.
Папки автозапуска
Первая папка, которая отрабатывается после завершения загрузки Windows, — это папка «Автозагрузка», которая может хранить список ярлыков (*.lnk) приложений или документов. Ее состояние можно увидеть, выйдя из меню «Пуск» в подменю «Программы». Это — папка, относящаяся к «Текущему пользователю».
Чтобы найти ее размещение, сначала надо найти в системном реестре ключ «HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion Explorer User Shell Folders», хранящий размещение всех измененных папок, и отыскать там параметр «Startup» строкового типа. Если искомый параметр отсутствует, то ее размещение по умолчанию на жестком диске прописано в системном реестре в параметре «Startup» ключа «HKEY_CURRENT_USER SOFTWARE Microsoft Windows CurrentVersion Explorer Shell Folders».
Ярлыки к приложениям, находящимся в папке «Автозагрузка», отображаются в программе для настройки системы «MSConfig.exe». Если отключить автоматический запуск какого-нибудь элемента через «MSConfig.exe», то в папке «Программы» (она же и подменю в меню «Пуск») будет создана папка с названием «Отключенные элементы запуска», куда «MSConfig.exe» и переместит отключенный элемент. Для того чтобы временно исключить ярлык из автоматической загрузки, я прибегаю к более простому способу: у необходимого ярлыка я выставлю атрибут «скрытый» и при следующей загрузке он пропускается.
Следующая папка — это «Общая» для всех пользователей папка «Автозагрузки» (Common Startup Folder), которая также отрабатывается после загрузки Windows в поисках ярлыков с документами или приложениями. Увидеть ее в подменю «Пуск» можно в Windows NT или 2000. В Windows 9.x, ME ее содержимое не отображается. Она должна хранить ярлыки общие для профилей всех пользователей. В документации Microsoft (MSDN) сказано, что эта папка создавалась для Windows. Однако ее содержимое отрабатывается, даже если Windows 95, 98, ME работают в однопользовательском режиме.
В системном реестре ее размещение на жестком диске прописано в строковом параметре «Common Startup» ключа «HKEY_LOCAL_MACHINE SOFTWARE Micro-soft Windows CurrentVersion Explorer Shell Folders», который хранит измененные пути папок. При отсутствии этого параметра следует посмотреть размещение этой папки по умолчанию в параметре «Common Startup» ключа «HKEY_LOCAL_MA-CHINE SOFTWARE Microsoft Windows CurrentVersion Explorer Shell Folders».
Список исполнимых файлов, находящихся в «Общей» (для профилей всех пользователей) папке «Автозагрузка» также показываются «MSConfig.exe». Если отключить автоматический запуск какого-нибудь элемента через «MSConfig.exe», то в той же папке, где находится папка «Общего запуска», будет создана папка с названием «Отключенные элементы запуска», куда утилитой «MSConfig.exe» будут перемещены отключенные элементы запуска.
Администраторам следует обращать внимание на содержимое этой папки как место для возможного запуска приложений.
Системный реестр: автозапуск, общий для всех версий Windows
В системном реестре Windows есть ветвь «SOFTWARE Microsoft Windows CurrentVersion», содержащая несколько групп для автоматического запуска приложений. Все эти группы могут быть как в разделе HKEY_LOCAL_MACHINE, так и в разделе HKEY_CURRENT_USER. Изложение будет общим, и все может быть экстраполировано на оба этих раздела. Если Windows используется как многопользовательская среда, другими словами, это либо Windows версий NT/2000/XP, либо 95, 98, ME с задействованными профилями пользователей, то группы запуска следует искать также в разделе «HKEY_USERS .Default». Это раздел общий для всех пользователей системы. Если Windows 95, 98, ME работают в однопользовательском режиме, то раздел «HKEY_USERS .Default» идентичен разделу HKEY_CURRENT_USER.
Итак, я приведу полные пути к ключам: «SOFTWARE Microsoft Windows CurrentVersion Run», «SOFTWARE Microsoft Windows CurrentVersion RunOnce», «SOFTWARE Microsoft Windows CurrentVersion RunOnceEx», «SOFTWARE Microsoft Windows CurrentVersion RunOnce Setup», «SOFTWARE Microsoft Windows CurrentVersion RunServices», «SOFTWARE Microsoft Windows CurrentVersion RunServicesOnce», которые могут содержать строковые параметры, с именами приложений или документов запускающиеся при старте системы. Раздел реестра «RunOnce» не поддерживается в Windows NT 3.5. Имена строковых параметров, содержащихся в этих ключах, могут быть произвольными.
Далее я приведу несколько правил, ориентируясь на которые можно лучше понять процесс и очередность запуска приложений, прописанных в тех или иных местах автозапуска:
Ключи, содержащиеся в разделе HKEY_LOCAL_MACHINE, отрабатываются раньше соответствующих ключей, находящихся в разделе HKEY_CURRENT_USER.
Содержимое ключей системного реестра «RunServices», «RunServicesOnce» обрабатывается раньше параметров ключей «Run», «RunOnce».
Запуск «RunServices» и «RunServicesOnce» происходит до выдачи окна регистрации пользователя, далее идет асинхронно с диалогом регистрации и может продолжаться и после успешно проведенной регистрации. Приложения, прописанные в параметры системного реестра, содержащиеся в ключах «RunServices» и «RunServicesOnce», запускаются асинхронно, и поэтому может возникнуть ситуация, когда они будут работать одновременно.
Запуск приложений или документов, как это следует из самого названия, прописанных в ключах «RunOnce» и «RunServicesOnce», происходит один раз, независимо от того, был он успешным или нет. Параметр, находящийся в ключе «RunOnce» или «RunServicesOnce», удаляется до запуска приложения, имя которого он содержит.
Параметры, содержащиеся в ключах «Run», «RunOnce», запускаются синхронно и в неопределенном порядке, но после того, как закончило загрузку содержимое «RunServices» и «RunServicesOnce».
Ключи системного реестра обрабатываются в следующем порядке. Первыми отрабатывается содержимое «RunServices» и «RunServicesOnce» раздела HKEY_LOCAL_MACHINE. Далее выдается окно регистрации пользователя в системе. После этого операционная система переходит к обработке ключей «RunOnce» и «Run» раздела HKEY_LO-CAL_MACHINE, далее «Run» раздела HKEY_CURRENT_USER. Следующими запускаются элементы, содержащиеся в папке «Автозагрузка». После этого наступает очередь параметров ключа «RunOnce» раздела HKEY_CURRENT_USER.
Списками параметров, автоматически запускающих приложения при старте Windows, находящихся в ключах «RunServices» и «Run», можно управлять с помощью приложения для настройки системы «MSConfig.exe». Если отключить какой-либо элемент из списка, то «MSConfig.exe» переместит этот элемента в ключ «RunServices-» или «Run-» соответственно.
Следует обратить внимание на ключ «Setup», который может содержаться в ключе «RunOnce» как в разделе HKEY_LOCAL_MACHINE, так и в разделе HKEY_CURRENT_USER. Этот ключ используется как мастером установки Windows, так и мастером «установки — удаления» программ. При отработке параметров, содержащихся в этом ключе, отображается диалоговое окно с индикатором прогресса. Имя параметра используется как имя пункта в диалоговом окне. Аналогично содержимому ключа «RunOnce», пункты ключа «RunOnce Setup» удаляются и запускаются один раз.
Еще один ключ системного реестра, на который следует обратить внимание, — это «RunOnceEx». Приведу отличия запуска параметров, находящихся в «RunOnceEx» от запуска параметров, содержащихся в ключах системного реестра «RunOnce» и «Run».
Параметры, находящиеся в ключе «RunOnceEx», запускаться не будут. Для автоматической отработки необходимо создать в нем ключ реестра, и уже в нем должны быть параметрами с именами приложений. Ключи и параметры, находящиеся в ключе «RunOnceEx», сортируются в алфавитном порядке для того, чтобы принудительно придать им строго определенный порядок запуска. Другими словами, элемент, находящийся выше по алфавиту, будет запущен раньше, независимо от того, когда он был добавлен в ключ «RunOnceEx». Приложения или файлы сценариев должны или сами себя завершать, или не требовать отдельного вмешательства для завершения, пока не завершится один элемент запуска или остановится дальнейшая отработка списка, или загрузка Windows остановится в ожидании принудительного завершения запущенного приложения. Для приложений, запущенных из ключа «RunOnceEx», в отличие от ключей «RunOnce» и «Run», отдельные процессы не создаются.
Содержимое ключей «RunOnce», «RunOnceEx», «RunOnce Setup» и «RunServicesOnce» приложением настройки системы «MSConfig.exe» не отображается.
Особенности автозапуска в Windows NT/2000/XP
В добавление к вышеперечисленным ключам, для Windows версий NT, 2000 и XP специфичен еще один ключ системного реестра — «Software Microsoft Windows NT CurrentVersion Windows Run», который может находиться в разделах LO-CAL_MACHINE или HKEY_CURRENT_USER.
В ключе «Software Microsoft Windows NT CurrentVersion Windows» могут находиться два строковых параметра «Load» и «Run», которые могут хранить списки приложений для автоматического запуска.
Эти параметры аналогичны одноименным параметрам из файла инициализации «Win.ini». При установке Windows NT (2000) поверх Windows 95, 98 значения параметров из «Win.ini» раздела «[windows]» переносятся в соответствующие параметры ключа «Software Microsoft Windows NT CurrentVersion Windows». Если в параметре указывается несколько файлов, то имена должны быть разделены пробелами. Поэтому в них невозможно прописать путь к файлу, содержащим пробелы, — двойные кавычки не принимаются. «Значение по умолчанию» для этих параметров — пробел. Программы, запущенные из параметра «Load», минимизируются при запуске.
Особенности автозапуска в Windows ME/2000/XP
У Windows версий ME, 2000 и XP появляется еще один список автозагрузки программ или документов, запускающихся после регистрации пользователя в системе, который может размещаться как в разделе HKEY_LOCAL_MACHINE, так и в разделе HKEY_CURRENT_USER. Он размещается в строковых параметрах ключа «Software Microsoft Windows CurrentVersion Policies Explorer Run». Имена параметров для этого ключа имеют особенность: они должны быть представлены в виде порядковых номеров, начиная с «1». Список, находящийся в разделе HKEY_LOCAL_MACHINE, будет отработан раньше списка раздела HKEY_CURRENT_USER.
Автозапуск при отработке Windows Logon
Отдельная группа Windows Logon для управления инициализацией при регистрации пользователя появляется в Windows NT и далее развивается Microsoft для Windows версий 2000 и XP. Параметры Winlogon находятся в системном реестре в ключе «SOFTWARE Microsoft Windows NT CurrentVersion Winlogon» раздела HKEY_LOCAL_MACHINE. Все описываемые в статье параметры, относящиеся к Winlogon, имеют строковый тип.
Параметр Shell
Параметр «Shell», отвечающий за программную оболочку, присутствует в ветви реестра «Winlogon» в версиях Windows NT, 2000 и XP.
Этот строковый параметр определяет список исполнимых файлов, обеспечивающих для операционной системы интерфейс пользователя и которые должны быть запущены вместе с программной оболочкой.
По умолчанию Windows запускает программы, перечисленные в параметре «Userinit», расположенном в ветви «Winlogon», включая и сам «Userinit.exe». Если же по какой-то причине «Winlogon» процесс не смог запустить программы, определенные в параметре «Userinit», тогда «Winlogon» переходит непосредственно к обработке исполнимых файлов, имена которых записаны в параметре «Shell».
Значение по умолчанию параметра «Shell» может варьироваться. Это — «taskman, progman, wowexec» для Windows NT и «Explorer.exe» для Windows 2000, XP.
Параметр System
Этот параметр присутствует в Windows версий NT, 2000 и XP. Он содержит список имен исполнимых файлов, запускаемых Winlogon в системном контексте во время инициализации системы. Этот список можно варьировать, редактируя значение этого параметра.
Значение по умолчанию этого параметра — «lsass.exe, spoolss.exe» для Windows NT, и «lsass.exe» для Windows 2000, XP. Интересно замечание Microsoft, приведенное в MSDN: «Этот параметр появляется, но не используется самой Windows 2000».
Параметр VmApplet
Параметр «VmApplet», запускающий приложение «Панели управления» для настройки конфигурации системы, специфичен для Windows версий 2000 и XP.
Он содержит список или один исполнимый файл, которые Winlogon-процесс запускает для того, чтобы пользователь мог скорректировать настройки виртуальной памяти, если на системном томе отсутствует страничный файл подкачки. В этом параметре не обязательно указывать расширения для имен файлов.
Значение по умолчанию этого параметра — «rundll32 shell32, Control_RunDLL «sysdm.cpl»». Не стоит без нужды и изменять значение этого параметра, потому что это может привести к изменению настроек виртуальной памяти в Windows 2000, XP.
Параметр Userinit
«Userinit» (инициализация пользователя) специфичен для версий Windows NT, 2000 и XP.
Значение этого параметра содержит исполнимые файлы, которые запускаются процессом WinLogon в контексте пользователя, при регистрации пользователя в системе.
По умолчанию Winlogon запускает «Userinit.exe», который ответственен за запуск программной оболочки и исполняет файлы сценариев для регистрации, переустанавливает сетевые соединения и затем запускает «Explorer.exe».
Значение по умолчанию параметра «Userinit»: «userinit, nddeagnt.exe» для Windows NT, «userinit» для Windows 2000, XP. Приложение «nddeagnt.exe» необходимо для запуска NetDDE — сетевого динамического обмена данными.
Расширения в именах файлов, перечисленных в этом параметре, не обязательны.
Значение этого параметра можно изменять, добавляя или убирая программы из списка.
Если необходимо запустить приложение до загрузки интерфейса пользователя вместе с «проводником» Windows, то для этого можно заменить «Userinit.exe» на имя своей программы, не забыв включить в приложение код для запуска «Userinit.exe», или поступить еще проще, создав исполнимый файл для пакетной обработки с именем «userinit.bat», со списком программ для запуска и в одной из строк прописать собственно «Userinit.exe».
P.S. Информация, систематизированная в этой статье, была адресована в первую очередь администраторам Windows-систем, а не хакерам. Все сведения, приведенные в статье, содержатся в том или ином виде в официальной документации Microsoft.
Страшные компьютерные сказки о «синем» и «черном экране» Windows когда-нибудь да осуществляются на каждом компьютере, где установлена эта популярная операционная система.
Как правило, сотрудники Microsoft скромно отмалчиваются или отрицают свою причастность к «черному экрану» при загрузке ОС, но мы-то знаем… Обычно это происходит при обновлениях, которые бестолково вносят изменения в реестр Windows.
Вчера утром впервые столкнулся с проблемой «черного экрана» Windows 7.
Запустил компьютер, но увидел только это – полностью черный экран, который не реагировал на мышку и клавиши «Windows» или «Контекстное меню».
Эксперты, которые не так связаны корпоративной этикой, как сотрудники Microsoft, давно заметили, что проблема «черного экрана» Windows 7 (и Windows XP) появляется при автоматическом обновлении операционной системы. При следующей за обновлением загрузке компьютера появляется такая напасть (см. Как отключить автоматическое обновление Windows 7). Microsoft, нужно заметить, «допускает такую возможность».
Независимые эксперты определили, что проблема возникает из-за особенностей хранения данных реестра, которые имеет новая система. Основной «жертвой» является значение Shell, которое обрабатывается неправильно и вызывает «черный экран» при загрузке. Не загружается при этом ничего – ни обои, ни панель задач, ни боковые и другие панели. В редких случаях можно увидеть разве что окно проводника, если оно не было свернуто.
Как исправить, если при загрузке Windows видно только «черный экран»?
На самом деле, исправить «черный экран» очень просто. Нужно внести маленькое изменение в реестр операционной системы. Расскажу, как сделал это вчера дядя Саша.
Вызываем Диспетчер задач Windows комбинацией клавиш Shift+Ctrl+Esc и нажимаем в нем кнопку «Новая задача».
В окошке «Создать новую задачу» указываем вызов Редактора реестра – в строке «Открыть» пишем «regedit» и нажимаем «ОК».
В Редакторе реестра начинаем искать нужное значение ключа «Shell»: выбираем «HKEY_LOCAL_MACHINE», далее – «SOFTWARE»…
«Microsoft»…
«WindowsNT» и «CurrentVersion»…
Наконец, находим ветку Winlogon.
В правом окошке Редактора реестра находим нужный нам ключ «Shell» и дважды щелкаем на строке с его значением левой кнопкой мыши.
В окошке «Изменение строкового параметра» для параметра «Shell» должно быть значение «explorer.exe».
Его нужно удалить нафиг и нажать «ОК» для сохранения изменений ключа. Если там вдруг будут и другие значение – удаляем все.
Внимание! Если никаких значений Shell нет, то нужно удалить ключ, а потом создать его заново с пустым значение. Для создания строки параметра на пустом месте окна нажимаем правой кнопкой мыши и выбираем: «Создать» – «Строковой параметр».
Появляется предварительный «Новый параметр» номер такой-то.
Нужно назвать его «Shell».
Осталось перезагрузить компьютер и радоваться жизни, что я вчера и сделал.
Примечание: «черный экран» Windows XP чаще всего появляется после установки третьего пакета обновлений Windows (Service Pack 3). Или же первого, которое пытаются установить поверх Service Pack 2.
Причиной «черного экрана» Windows XP обычно является вирус, опасный системный вирус. Существует небольшой патч Prevx (гуглите), который автоматически и самостоятельно устраняет проблему при запуске.
Как прочитать пост «Черный экран», если у вас «черный экран», и вы ничего прочитать не можете
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
- Remove From My Forums
-
Question
-
Hi,
hi Have created a application which i have configured as custom Shell in HKEY_LOCAL_MACHINESoftwareMicrosoftWindows NTCurrentVersionWinlogonShell
i have done in in HKEY_LOCAL_MACHINE
because it is needed to to run for all user,
when user login with administrator then application starts explorer.exe. but explorer.exe just opens windows explorer instead running desktop.
is anyone have any idea how to resolve this?
please someone provide some information.
thanks in advance,
Manish.
-
Moved by
Friday, December 2, 2011 5:36 AM
move for better support (From:Building Development and Diagnostic Tools for .Net) -
Moved by
Mike Dos Zhang
Monday, December 5, 2011 7:15 AM
Windows general usage question (From:General Windows Desktop Development Issues)
-
Moved by
Answers
-
It is NOT possible to set explorer as shell without designating it as shell in the registry key.
Keeping explorer as shell in the registry, but killing explorer.exe and launching your shell work as an option for you?
I dont see any other clean way around.
Sumesh P — Microsoft Online Community Support
-
Marked as answer by
Niki Han
Wednesday, December 21, 2011 9:13 AM
-
Marked as answer by
Можно поступить по садистски хитро — в качестве оболочки прописать нужное приложение. То есть вместо explorer.exe будет запускаться, к примеру, msdn.exe:
Идем в regedit по пути
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWinlogon
и меняем параметр Shell на путь к нужной программе.
и дополнительно в аналогичной ветке:
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon
проделываем тот же финт.
Можно сделать файлы реестра, включающие и отключающие данную фишку. К примеру, содержимое файла реестра, включающее explorer в качестве оболочки:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWinlogon]
"Shell"="c:\windows\explorer.exe"
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon]
"Shell"="c:\windows\explorer.exe"
Точно так же можно создать файл реестра для запуска своей программы:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionWinlogon]
"Shell"="c:\Program Files\OurProgram\program.exe"
[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon]
"Shell"="c:\Program Files\OurProgram\program.exe"
Если вы когда-либо нажимали на что-то правой кнопкой мыши и задавались вопросом, откуда взялся этот мусор, вы не одиноки.
По умолчанию Windows включает в себя множество параметров в этом контекстном меню, и этот список растет при установке новых приложений. Иногда кажется, что каждое приложение сражается за часть вашего контекстного меню, хотя большинство из нас не использует даже половину команд.
Сегодня мы покажем Вам, как вы можете удалять элементы, редактируя свой реестр, а также более простой метод очистки, используя пару бесплатных сторонних приложений. Мы также укажем вам, как добавить несколько полезных команд. Без особых усилий вы можете «засорить» контекстное меню только полезными командами – оптимизированными и эффективными.
Редактирование реестра контекстного меню
Если вы хотите очистить контекстном меню грубым способом, то можете сделать это из редактора реестра без необходимости использования стороннего программного обеспечения. Позже мы перейдем к более легким инструментам, но мы считаем, что это вступление поможет понять, как другие инструменты работают с реестром.
Стандартное предупреждение: редактор реестра является мощным инструментом и неправильное использование может сделать вашу систему нестабильной или даже неработоспособной.
Откройте редактор реестра, нажав комбинацию клавиш Win + R и набрав regedit. Нажмите Ввод, чтобы открыть редактор реестра, а затем дайте разрешение на внесение изменений на вашем компьютере.
К сожалению, элементы, заполняющие ваше контекстное меню находятся в разных местах реестра. Вы сможете найти большинство элементов контекстного меню, используемых для файлов и папок, в одном из следующих разделов реестра:
HKEY_CLASSES_ROOT*shell
HKEY_CLASSES_ROOT*shellexContextMenuHandlers
HKEY_CLASSES_ROOTAllFileSystemObjectsShellEx
Вы найдете пункты контекстного меню, относящиеся только к папкам в одном из этих разделов:
HKEY_CLASSES_ROOTDirectoryshell
HKEY_CLASSES_ROOTDirectoryshellexContextMenuHandlers
Вам нужно будет обрабатывать элементы контекстного меню, найденные в этих местах, немного по-другому, поэтому продолжайте читать, и мы объясним, как это сделать. На данный момент удобным может быть нахождение каждого из этих мест в реестре и добавление в список избранного, чтобы проще было находить позже.
Удалить элементы «Shell»
Давайте рассмотрим один пункт в качестве примера. Я использую видеоплеер VLC. Когда я установил его, VLC добавил элемент контекстного меню с названием «Добавить в плейлист VLC». Я никогда не использую его и, скорее всего, не буду использовать.
Вот как мы избавимся от этого пункта меню. В редакторе реестра перейдите к следующему ключу:
HKEY_CLASSES_ROOTDirectoryshellAddtoPlaylistVLC
Я заметил AddtoPlaylistVLC ключ во время просмотра shell, ища элементы для удаления. Элементы под обычным shell-ключом, как правило, очень легко обнаружить и понять значение.
У нас есть несколько вариантов того, как справиться с этим. Мы могли бы просто удалить этот AddToPlaylistVLC полностью, и это приведет к удалению элемента из контекстного меню. Однако, если вы не создадите резервную копию своего реестра или сначала не экспортируете ключ, вам будет нелегко его вернуть, если передумаете.
Второй вариант – отключить ключ, а не удалять его. Для этого просто щелкните правой кнопкой мыши AddToPlaylistVLC или любой другой ключ, с которым вы работаете, и выберите Создать → Строковый параметр. Назовите новое строковое значение LegacyDisable.
Как только вы создадите LegacyDisable, изменения произойдут незамедлительно. Щелкните правой кнопкой мыши файл или папку в Проводнике файлов, и Вы увидите, что элемент «Добавить в плейлист VLC» исчез из контекстного меню.
Существует также третий вариант. Если вы иногда используете элемент меню, но не хотите, чтобы он загромождал обычное контекстное меню, вы можете скрыть его в расширенном контекстном меню, которое будете видеть, только когда удерживаете Shift, щелкая правой кнопкой мыши файл или папку.
Чтобы сделать это, щелкните правой кнопкой мыши AddToPlaylistVLC или любой другой ключ, с которым вы работаете, и выберите Создать → Строковое значение. Назовите его Extended.
Теперь он появится, только если вы щелкните правой кнопкой мыши по папке, удерживая Shift.
Удалить элементы Shellex
Вероятно, вы заметили, что некоторые из общих ключей реестра, которые мы указали в верхней части этого раздела, имеют название «shellex» (расширение оболочки) вместо имени «shell». Вам придется обрабатывать эти типы ключей немного по-другому.
В качестве примера мы перейдем к одному из тех ключей, о которых мы говорили:
HKEY_CLASSES_ROOTDirectoryshellexContextMenuHandlers
Элементы shellex немного сложнее расшифровать, но Вы можете определить элемент по имени ключа слева. Здесь мы будем работать с Yandex.Disk.3 внутри ContextMenuHandlers.
Когда Яндекс.Диск будет установлен, он добавит команду «Скопировать ссылку на Яндекс.Диске» в контекстное меню. Поскольку я больше занимаюсь перетаскиванием, я никогда не использовал эту команду, и собираюсь избавиться от неё.
Здесь не получится использовать трюки с указанными выше LegacyDisable и Extended. Но, Вы можете удалить весь DropboxExt-ключ, чтобы удалить его из контекстного меню (и обязательно верните ключ, если вы это сделаете), но есть простой способ его отключить. Просто выберите ключ слева, а затем дважды щелкните по значению (По умолчанию), чтобы открыть окно свойств.
В окне свойств в поле «Значение» измените существующее значение, поставив перед ним несколько тире, не удаляя имеющихся символов. Тогда, если вы передумаете, сможете просто вернуться и удалить тире. Когда всё будет готово, нажмите ОК.
Изменение будет немедленным: попробуйте щелкнуть правой кнопкой мыши что-то в Проводнике и убедитесь, что команда исчезла.
К сожалению, когда дело доходит до ключей shellex, невозможно скрыть их в расширенном контекстном меню так, как мы делали это с элементами оболочки. Их можно либо удалить, либо отключить.
Исследуйте другие местоположения по типу файла
Если вы хотите удалить элементы контекстного меню, которые вы видите только при щелчке правой кнопкой мыши по определенным типам файлов, вы также можете избавиться от них. Эти элементы хранятся в elswhere. Чтобы найти их, вам нужно сначала найти ключ расширения файла в разделе HKEY_CLASSES_ROOT.
Например, вы хотите удалить пункт меню для открытия документа Excel (XLSX) в Excel, когда вы щелкаете его правой кнопкой мыши. Зачем вам это делать? Это только пример. Другие приложения также могут добавлять разные типы команд, которые вам не нужны.
Вы можете начать с просмотра следующего ключа реестра для расширения XLSX:
HKEY_CLASSES_ROOT.xlsx
Столбец данных Значение для ключа (По умолчанию) позволяет узнать, что фактический тип файла – Excel.Sheet.12.
Теперь вы можете перейти к этому расширению:
HKEY_CLASSES_ROOTExcel.Sheet.12shell
Теперь, когда вы нашли правильный shell-ключ, вы можете использовать те же методы, которые мы описали в предыдущем разделе, об элементах «shell», чтобы удалить, отключить или скрыть элемент в расширенном контекстном меню. Помните строковые значения LegacyDisable и Extended? Да, эти приёмы здесь тоже работают.
Управление контекстным меню с помощью NirSoft Utilities
Теперь, когда вы знаете, как сделать что-то трудное, давайте взглянем на простой способ. Вместо редактирования реестра вы можете загрузить два инструмента из NirSoft, чтобы очистить контекстное меню.
Почему два инструмента? Потому что один из них обрабатывает обычные элементы оболочки, а один обрабатывает элементы shellex. Они намного проще в использовании, чем редактирование реестра, но закулисное понимание того, как эти инструменты обрабатывают реестр, даст вам возможность разобраться во всех элементах, отображаемых этими инструментами.
Начните с загрузки обоих инструментов. Первым инструментом является ShellMenuView, который обрабатывает обычные элементы оболочки. Второй инструмент – ShellExView, который обрабатывает элементы shellex. Прокрутите вниз до нижней части обеих этих страниц, чтобы найти ссылки для загрузки. Инструменты и работают с почти любой версией Windows – от 98 вплоть до 10.
В окне ShellMenuView просто посмотрите список, пока не найдете элемент, который хотите отключить. Вы можете только отключать элементы с помощью этих инструментов, а не удалять их или скрывать в расширенном контекстном меню. И, кстати, эти инструменты отключают элементы, создавая LegacyDisable внутри соответствующего ключа – так же, как мы это делали при редактировании реестра вручную.
Когда вы найдете нужный элемент, нажмите кнопку Отключить на панели инструментов (красная лампочка).
Ещё одно преимущество использования этих инструментов заключается в том, что вы можете выбрать несколько элементов, а затем отключить их все сразу. В нашем примере мы отключили элемент «Добавить в плейлист VLC» только при щелчке правой кнопкой мыши по папке (тот же пример, который мы использовали в разделе реестра ранее), но мы могли бы легко выбрать все элементы «Добавить в плейлист VLC», а затем нажать Отключить, чтобы удалить эту команду из контекстного меню всех поддерживаемых типов файлов.
Когда вы закончите удаление элементов оболочки, следующим шагом будет запуск инструмента ShellExView и удаление элементов shellex. Это работает точно так же, как и первый инструмент. Просто выберите один или несколько элементов, а затем нажмите кнопку Отключить, чтобы удалить элементы из контекстного меню.
В итоге, Вы будете удивлены тем, насколько приятнее использовать чистое контекстное меню, в котором есть только нужные команды. И так, чего же Вы ждете? Пришло время начать делать эти контекстные меню более полезными!