Автозапуск по-взрослому 2

 | 17.32

Мой Компьютер, №11 (515), 28.07.2008

Все дополнительные команды по работе с содержимым носителей (помимо команд Не выполнять никаких действий, Спрашивать каждый раз и Открыть папку для просмотра файлов, используя Проводник) хранятся в параметрах строкового типа подразделов ветви реестра HKLMSoftwareMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersEventHandlers.

Содержимое каждого выпадающего списка, отображаемого в мастере Автозапуск (а следовательно, и содержимое диалога Автозапуск для конкретного типа содержимого носителя), формируется отдельным дочерним подразделом данной ветви реестра. Основные из этих подразделов перечислены ниже.

  • 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.

Содержимое выпадающего списка мастера Автозапуск формируется при помощи параметров строкового типа, расположенных в ветвях реестра вида HKLMSoftwareMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersEventHandlers»подраздел выпадающего списка, описанный выше». Названия этих параметров определяются названиями подразделов ветви HKLMSoftwareMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersHandlers. Именно при помощи подразделов данной ветви реестра определяется не только название действия в выпадающем списке, но и результаты применения соответствующего действия.

Теперь давайте перечислим названия основных подразделов ветви HKLMSoftwareMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersHandlers.

  • EhomeMusicDropTarget. Команда Воспроизводить звуковой CD. По умолчанию данная команда отображается: «Звуковой CD», «Звуковой улучшенный CD».
  • MSOpenFolder. Команда Открыть папку для просмотра файлов. По умолчанию данная команда отображается во всех списках.
  • MSTakeNoAction. Команда Не выполнять никаких действий. По умолчанию данная команда отображается во всех списках.
  • MSPromptEachTime. Команда Спрашивать каждый раз. По умолчанию данная команда отображается во всех списках.
  • MSAutoRun. Команда Установить или выполнить программу. По умолчанию данная команда отображается для: «Звуковой улучшенный CD», «Программы и игры», «Звуковой улучшенный DVD».
  • EHomeVideosHandler. Команда Воспроизводить. По умолчанию данная команда отображается для: «Видеофайлы».
  • MSShowPicturesOnArrival. Команда Просмотреть изображения. По умолчанию данная команда отображается для: «Изображения».
  • EHomePhotosHandler. Команда Просмотреть. По умолчанию данная команда отображается для: «Изображения».
  • MSPhotoAcquireDropHandler. Команда Импортировать изображения. По умолчанию данная команда отображается для: «Видеофайлы», «Изображения».
  • MagicUSBCable. Команда Перенос файлов и параметров настройки.
  • MSDVDArrivalDvdMaker. Команда Записать видео-DVD. По умолчанию данная команда отображается для: «Чистый DVD».
  • MSPlayMediaOnArrival. Команда Воспроизводить.
  • MSSHAudioDevHandler. Команда Просмотреть музыкальные файлы.
  • MSVideoCameraArrivalCaptureWizard. Команда Импорт видео.
  • MSWPDNetworkConfigHandler. Команда Настройка устройства для сетевого доступа.
  • MSWPDShellNamespaceHandler. Команда Открыть устройство для просмотра файлов.

Итак, результат выбора определенного действия из диалога Автозапуск определяется при помощи параметров строкового типа ветви реестра HKLMSoftwareMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersHandlers»идентификатор команды выпадающего списка». Ниже перечислены основные из этих параметров.

  • Action. Содержит название действия, отображаемое в диалоге Автозапуск.
  • DefaultIcon. Определяет иконку, отображаемую в диалоге Автозапуск.
  • InvokeProgId. Содержит идентификатор действия, выполняемого при выборе данного элемента диалога Автозапуск. Само действие описывается в параметре (по умолчанию) ветви реестра HKCR»значение параметра InvokeProgId»shell»значение параметра InvokeVerb»command.
  • InvokeVerb. Определяет идентификатор конкретной команды, которая будет выполнена при выборе соответствующего действия из диалога Автозапуск.
  • Provider. Определяет программу или библиотеку, которая реализует возможность выполнения данной команды.

Чтобы лучше понять теоретическую часть, давайте рассмотрим два примера, которые могут вам пригодиться.

Пример 1: удаление лишних команд

Первый пример достаточно простой. Давайте попробуем удалить какие-либо команды из диалога Автозапуск. Например, на рис. 1 представлен достаточно милый диалог Автозапуск, страдающий только одной проблемой — лишним «весом».

Рис. 1

Зная себя, я с уверенностью могу сказать, что такие команды данного диалога, как Воспроизводить звуковой CD, Play CD Audio, а также все команды, добавленные iTunes, мне совершенно не нужны. А если они мне не нужны, тогда зачем на них постоянно смотреть? Давайте их уберем.

Рис. 2

Для этого достаточно отредактировать содержимое ветви реестра HKLMSOFTWAREMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersEventHandlersPlayCDAudioOnArrival, в которой, как мы уже знаем, определяются команды, отображаемые в диалоге Автозапуск для звукового CD. В этой ветви реестра находится куча строковых параметров, из которых нужно оставить только MSPlayCDAudioOnArrival и MSRipCDAudioOnArrival. Остальные можно переименовать. В итоге наш диалог похудел настолько, насколько даже и не снилось тем людям, которые ходят со значками «Спроси меня, как я похудел» (рис. 2).

Пример 2: добавление своей собственной команды

Следующий пример будет посложнее. Мы попробуем добавить в диалог Автозапуск свою собственную команду. Например, давайте добавим команду, которая будет копировать все содержимое диска/носителя в каталог c:tmp. Наша команда будет отображаться для носителей с любым содержимым.

Если мы хотим, чтобы команда отображалась для любых носителей, ее событие нужно добавить к ветви реестра HKLMSOFTWAREMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersEventHandlersUnknownContentOnArrival. Добавим к этой ветви реестра параметр строкового типа MyTEST.

После того, как мы добавили событие MyTEST, нам необходимо создать это событие. Для этого необходимо создать ветвь реестра HKLMSOFTWAREMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersHandlersMyTEST, после чего создать в ней как минимум следующие параметры строкового типа.

  • 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_MACHINESOFTWAREMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersEventHandlersUnknownContentOnArrival]

«MyTEST»=»»

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionexplorerAutoplayHandlersHandlersMyTEST]

«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

Robo User
Web-droid editor

Додати коментар

Ваша email адреса не буде опублікована.