Автозапуск по-взрослому 2
17.11.08Мой Компьютер, №11 (515), 28.07.2008
В предыдущей статье на эту тему (МК, №9 (513)) мы с вами уже рассмотрели общие возможности нового механизма автозапуска, а также способы его отключения и включения, и, конечно, способы его настройки при помощи мастера «Автозапуск» папки «Панель управления». Теперь пришла пора научиться работать с механизмом хранения параметров автозапуска в реестре. Эти сведения могут быть полезны и разработчикам, которые хотели бы реализовать в создаваемой программе возможности по работе с механизмом автозапуска операционной системы Windows Vista.
Все дополнительные команды по работе с содержимым носителей (помимо команд Не выполнять никаких действий, Спрашивать каждый раз и Открыть папку для просмотра файлов, используя Проводник) хранятся в параметрах строкового типа подразделов ветви реестра HKLMSoftwareMicrosoftWindows CurrentVersionexplorerAutoplayHandlers EventHandlers.
Содержимое каждого выпадающего списка, отображаемого в мастере Автозапуск (а следовательно, и содержимое диалога Автозапуск для конкретного типа содержимого носителя), формируется отдельным дочерним подразделом данной ветви реестра. Основные из этих подразделов перечислены ниже.
-
PlayCDAudioOnArrival. Звуковой CD.
-
PlayDVDMovieOnArrival. Фильмы на DVD.
-
PlayEnhancedCDOnArrival. Звуковой улучшенный CD.
-
AutorunINFLegacyArrival. Программы и игры.
-
HandleCDBurningOnArrival. Чистый CD.
-
PlayEnhancedDVDOnArrival. Фильмы на улучшенном DVD.
-
PlayMusicFilesOnArrival. Звуковые файлы.
-
PlayVideoFilesOnArrival. Видеофайлы.
-
ShowPicturesOnArrival. Изображения.
-
HandleDVDBurningOnArrival. Чистый DVD.
-
MixedContentOnArrival. Смешанное содержимое.
-
PlayBluRayOnArrival. Фильмы на диске Blu-ray.
-
PlayDVDAudioOnArrival. Звуковой DVD.
-
PlayHDDVDOnArrival. Фильмы на HD DVD.
-
PlaySuperVideoCDMovieOnArrival. Супервидео CD.
-
PlayVideoCDMovieOnArrival. Видео CD.
Содержимое выпадающего списка мастера Автозапуск формируется при помощи параметров строкового типа, расположенных в ветвях реестра вида HKLMSoftwareMicrosoftWindows CurrentVersionexplorerAutoplay HandlersEventHandlers»подраздел выпадающего списка, описанный выше». Названия этих параметров определяются названиями подразделов ветви HKLMSoftwareMicrosoftWindows CurrentVersionexplorerAutoplayHandlersHandlers. Именно при помощи подразделов данной ветви реестра определяется не только название действия в выпадающем списке, но и результаты применения соответствующего действия.
Теперь давайте перечислим названия основных подразделов ветви HKLMSoftwareMicrosoft WindowsCurrentVersionexplorer AutoplayHandlersHandlers.
-
EhomeMusicDropTarget. Команда Воспроизводить звуковой CD. По умолчанию данная команда отображается: «Звуковой CD», «Звуковой улучшенный CD».
-
MSOpenFolder. Команда Открыть папку для просмотра файлов. По умолчанию данная команда отображается во всех списках.
-
MSTakeNoAction. Команда Не выполнять никаких действий. По умолчанию данная команда отображается во всех списках.
-
MSPromptEachTime. Команда Спрашивать каждый раз. По умолчанию данная команда отображается во всех списках.
-
MSAutoRun. Команда Установить или выполнить программу. По умолчанию данная команда отображается для: «Звуковой улучшенный CD», «Программы и игры», «Звуковой улучшенный DVD».
-
EHomeVideosHandler. Команда Воспроизводить. По умолчанию данная команда отображается для: «Видеофайлы».
-
MSShowPicturesOnArrival. Команда Просмотреть изображения. По умолчанию данная команда отображается для: «Изображения».
-
EHomePhotosHandler. Команда Просмотреть. По умолчанию данная команда отображается для: «Изображения».
-
MSPhotoAcquireDropHandler. Команда Импортировать изображения. По умолчанию данная команда отображается для: «Видеофайлы», «Изображения».
-
MagicUSBCable. Команда Перенос файлов и параметров настройки.
-
MSDVDArrivalDvdMaker. Команда Записать видео-DVD. По умолчанию данная команда отображается для: «Чистый DVD».
-
MSPlayMediaOnArrival. Команда Воспроизводить.
-
MSSHAudioDevHandler. Команда Просмотреть музыкальные файлы.
-
MSVideoCameraArrivalCaptureWizard. Команда Импорт видео.
-
MSWPDNetworkConfigHandler. Команда Настройка устройства для сетевого доступа.
-
MSWPDShellNamespaceHandler. Команда Открыть устройство для просмотра файлов.
Итак, результат выбора определенного действия из диалога Автозапуск определяется при помощи параметров строкового типа ветви реестра HKLMSoftwareMicrosoftWindows CurrentVersionexplorerAutoplay HandlersHandlers»идентификатор команды выпадающего списка». Ниже перечислены основные из этих параметров.
-
Action. Содержит название действия, отображаемое в диалоге Автозапуск.
-
DefaultIcon. Определяет иконку, отображаемую в диалоге Автозапуск.
-
InvokeProgId. Содержит идентификатор действия, выполняемого при выборе данного элемента диалога Автозапуск. Само действие описывается в параметре (по умолчанию) ветви реестра HKCR»значение параметра InvokeProgId»shell»значение параметра InvokeVerb»command.
-
InvokeVerb. Определяет идентификатор конкретной команды, которая будет выполнена при выборе соответствующего действия из диалога Автозапуск.
-
Provider. Определяет программу или библиотеку, которая реализует возможность выполнения данной команды.
Чтобы лучше понять теоретическую часть, давайте рассмотрим два примера, которые могут вам пригодиться.
Пример 1: удаление лишних команд
Первый пример достаточно простой. Давайте попробуем удалить какие-либо команды из диалога Автозапуск. Например, на рис. 1 представлен достаточно милый диалог Автозапуск, страдающий только одной проблемой — лишним «весом».
![]() |
Рис. 1 |
Зная себя, я с уверенностью могу сказать, что такие команды данного диалога, как Воспроизводить звуковой CD, Play CD Audio, а также все команды, добавленные iTunes, мне совершенно не нужны. А если они мне не нужны, тогда зачем на них постоянно смотреть? Давайте их уберем.
![]() |
Рис. 2 |
Для этого достаточно отредактировать содержимое ветви реестра HKLMSOFTWAREMicrosoftWindows CurrentVersionexplorerAutoplayHandlersEvent HandlersPlayCDAudioOnArrival, в которой, как мы уже знаем, определяются команды, отображаемые в диалоге Автозапуск для звукового CD. В этой ветви реестра находится куча строковых параметров, из которых нужно оставить только MSPlayCDAudioOnArrival и MSRipCDAudioOnArrival. Остальные можно переименовать. В итоге наш диалог похудел настолько, насколько даже и не снилось тем людям, которые ходят со значками «Спроси меня, как я похудел» (рис. 2).
Пример 2: добавление своей собственной команды
Следующий пример будет посложнее. Мы попробуем добавить в диалог Автозапуск свою собственную команду. Например, давайте добавим команду, которая будет копировать все содержимое диска/носителя в каталог c:tmp. Наша команда будет отображаться для носителей с любым содержимым.
Если мы хотим, чтобы команда отображалась для любых носителей, ее событие нужно добавить к ветви реестра HKLMSOFTWAREMicrosoftWindows CurrentVersionexplorer AutoplayHandlersEventHandlersUnknown ContentOnArrival. Добавим к этой ветви реестра параметр строкового типа MyTEST.
После того, как мы добавили событие MyTEST, нам необходимо создать это событие. Для этого необходимо создать ветвь реестра HKLMSOFTWAREMicrosoftWindows CurrentVersionexplorer AutoplayHandlers HandlersMyTEST, после чего создать в ней как минимум следующие параметры строкового типа.
-
Action. Определяет название команды в диалоге Автозапуск. Например, назовем свою команду именем Copy to.
-
DefaultIcon. Определяет иконку, которая будет отображаться напротив команды в диалоге Автозапуск. Если у вас есть подходящая иконка, укажите путь к ней. Мы же укажем значение shell32.dll.34 (то есть значок с идентификатором 34, расположенный в библиотеке shell32.dll).
-
InvokeProgID. Определяет название подраздела в корневом разделе HKCR, в котором будет описана команда, запускаемая нашим событием. Например, назовем наш подраздел именем CpyTo.MY.
-
InvokeVerb. Определяет идентификатор команды в нашем подразделе CpyTo.MY. Например, пусть будет команда open.
-
Provider. Необходимо указать провайдер, который выполнит нашу команду. Поскольку собственного провайдера у нас нет, воспользуемся стандартным и запишем строку @%SystemRoot%system32shell32.dll,-17411.
![]() |
Рис. 3 |
Идем дальше. В параметре InvokeProgID мы указали, что подразделом нашей команды будет CpyTo.MY. Пришла пора создать его. С учетом введенных нами значений для параметров InvokeProgID и InvokeVerb, нам необходимо создать ветвь реестра HKCRCpyTo.MYshellopencommand, после чего в параметре (по умолчанию) данной ветви реестра указать команду, которая будет выполнена при выборе нашего элемента диалога Автозапуск. Например, для копирования содержимого диска можно воспользоваться командой cmd.exe /k xcopy /S %1*.* c:tmp*.*. Общий итог наших действий представлен на рис. 3.
Чтобы было проще понять и воспользоваться данным примером, давайте приведем REG-файл всех выполненных нами действий.
REGEDIT4
[HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindows CurrentVersionexplorerAutoplay HandlersEventHandlers UnknownContentOnArrival]
«MyTEST»=»»
[HKEY_LOCAL_MACHINESOFTWARE MicrosoftWindows CurrentVersionexplorerAutoplay HandlersHandlersMyTEST]
«Action»=»copy to»
«DefaultIcon»=»shell32.dll.34»
«InvokeProgID»= «CpyTo.MY»
«InvokeVerb»=»open»
«Provider»= «@%SystemRoot%\system32\shell32.dll,-17411»
[HKEY_CLASSES_ROOTCpyTo.
MYshellopencommand]
@=»cmd.exe /k xcopy /S %1*.* c:\tmp\*.*»
Parad0x
Web-droid редактор
Не пропустите интересное!
Підписывайтесь на наши каналы и читайте анонсы хай-тек новостей, тестов и обзоров в удобном формате!


Oppo Enco Buds3 Pro – беспроводные наушники-долгожители



Oppo Enco Buds3 Pro – свежая модель в линейке наушников компании с обновлённым дизайном и хорошей автономностью. Расскажем подробнее.

Lenovo ThinkCentre M90a Gen 6 с Nvidia RTX 4050 уже доступен в Европе Lenovo компьютер
Lenovo ThinkCentre M90a Gen 6 позиционируется как универсальное решение для рабочих и мультимедийных задач
Samsung сделает некоторые ИИ-функции галереи Galaxy платными Samsung искусственный интеллект смартфон
В смартфонах Samsung Galaxy может появиться новая функция, связанная с искусственным интеллектом