Автозапуск
Автозапуск (англ. autorun) и автоматическое воспроизведение autoplay), или управление томами (англ. Volume Management) — функция в некоторых операционных системах и средах, заключающаяся в автоматическом выполнении определённых операций при обнаружении вновь подключённого носителя данных или свежепримонтированной файловой системы.
При неосторожном использовании данная функция может быть опасна, так как злоумышленник может добиться запуска вредоносного ПО[1][2].
Microsoft Windows
Функция автозапуска была введена в Windows 95, для упрощения установки программ не квалифицированными пользователями и для уменьшения количества звонков в службу поддержки. Когда записанный особым образом диск вставляли в привод, Windows определял наличие специального файла с инструкциями. Программное обеспечение записанное на диске, воспринимало инструкции как запуск к установке, на жесткий диск. Чтобы максимально увеличить вероятность установки программы на компьютер, те же самые действия происходили, если дважды нажать правой клавишей мыши в проводнике Windows по диску.
Автозапуск выполняется Проводником. В Windows 7 (и более ранних версиях) может быть выполнен добавлением ярлыка приложения в папку «автозагрузка» в меню «Пуск». В Windows 8 такая возможность убрана, реализовано более сложным, но более функциональным способом — через утилиту Планировщик заданий (доступ к ней: экран «Пуск» > чудо-кнопка Параметры > Плитки > Показать средства администрирования > найти утилиту в списке приложений).
Со стороны файловой системы настраивается с помощью autorun.inf.
Инициализация автозапуска
Автозапуск начинается, когда установлено новый носитель данных. Следующий шаг, уведомение пользователя об возможных действиях, которые можно сделать с носителем. После загрузки настроек с реестра, вы увидите окно в котором можно выполнить определенные действия. Если в носителе имеется файл autorun.inf, то дополнительные настройки считываются с него и выполняются дополнительные инструкции. Уведомление генерируется в соответствии с типом оборудования.
Принцип работы
Когда устройство получает новый носитель с загрузочной записью, "Media Change Notification" генерирует событие. Операционная система сообщает о приложениях, которые можно использовать вместе с данным носителем. Если устройство изменило раздел (применительно для CD) или порт (USB) система генерирует широковещательное сообщение WM_DEVICECHANGE для всех окон верхнего уровня. ОС вызвает "базовое" уведомление. Окна верхнего уровня, это те окна, которые являются потомками рабочего стола.
Устройства без раздела, это те устройства, которые не имеют буквы в ярлыке "Мой компьютер". Они не обрабатываются автозапуском .
Когда проводник получает сообщение об изменении раздела, он производит следующие действия:
- Проверяет включена ли автозагрузка в реестре. Если автозагрузка выключена для устройств или для данного типа устройств, то проводник не выполняет никаких действий дальше. В этом месте были ошибки.
- Проверить в корневом каталоге вставленного медиа-устройства наличие файла autorun.inf, если такой имеется, то обрабатывает его.
- Отправка сообщения QueryCancelAutoPlay для всех фоновых окон. Приложение, получив данное сообщение, может заблокировать автозапуск через RegisterWindowMessage. Прочие приложения, фоновые или активные, могут быть уведомлены с помощью IQueryCancelAutoPlay COM интерфейса в версии Windows XP и выше.
- Изменяется меню выбора. Пользователь двойным нажатием выберет иконку устройства в проводнике или нажмет на нее правой клавишей мыши, вызвав контекстное меню, которое задается файлом avtorun.inf.
- Добавляет из автозагрузки иконку и описание текста на значке дисковода.
- Проверяет нажата ли клавиша ⇧ Shift . Если она нажата в Windows XP то процесс автозагрузки прекратится, если в версии Windows Vista и выше, нажатая клавиша никак не повлияет на процесс.
- Завершение, тут три возможных события:
- не требуется дальнейших действий
- выплывет окно "Действия при автозагрузки", либо выполнит приложение описанное ключами open или shellexecute в файле autorun.inf в [autorun] секции.
- запустится автозагрузка с носителя
Положение дел в прошлом
Во всех версиях Windows, до версии Windows XP, любой файл autorun.inf, на любом носителе загружался и инструкции из него выполнялись. Автозапуск не требовал никаких дополнительных действий от пользователя.[3]Включительно DRIVE_REMOVABLE, DRIVE_FIXED и DRIVE_REMOTE типов носителей.
Автозапуск будет работать с сетевых носителей, если ему будет присвоена буква. Автозапуск будет работать и на дисководе, если в него будет вставлена дискета поддерживающая автозапуск.[4]
По умолчанию в версиях Windows старше Windows XP отключена автозагрузка с сетевых и съемных носителей, на CD приводах и жестких дисках остается без изменений.
Настройки реестра
Автозапуск сверяется со значениями находящимися в реестре и в зависимости от них выполняет действия для каждого конкретного устройства. Эти настройки могут быть изменены несколькими методами, одна из них изменение групповой политики.
Приоритетными ключами считаются NoDriveTypeAutoRun
и NoDriveAutoRun
. Эти ключи обрабатываются перед запуском системы и перед входом пользователя в систему и описаны более подробно ниже.
Типы носитилей
Носители в реестре делятся на следующие типы:
Название типа | Значение | Описание |
---|---|---|
DRIVE_UNKNOWN | 0x00000000 | Носитель который не может быть определен (основной носитель) |
DRIVE_NO_ROOT_DIR | 0x00000001 | Поврежденный носитель (не смонтированный носитель) |
DRIVE_REMOVABLE | 0x00000002 | Съемный носитель (floppy диск, USB флешка) |
DRIVE_FIXED | 0x00000003 | Диск не может быть удален из устройства(жесткий диск/SSD) |
DRIVE_REMOTE | 0x00000004 | Сетевой диск |
DRIVE_CDROM | 0x00000005 | Носитель в CD-ROM, DVD-ROM или BD-ROM приводе |
DRIVE_RAMDISK | 0x00000006 | Носитель является RAM диском |
DRIVE_NOT_DETERMINED | 0x00000007 | Неопределенное устройство |
DRIVE_NOT_FOUND | 0x00000008 | Диск извлечен |
[RESERVED] | 0x00000009 | Зарезервирован для будущих технологий |
Порядок проверки ключей выполнения автозагрузки
КлючиNoDriveAutoRun
и NoDriveTypeAutoRun
реестра могут существовать в двух разных местах, в настройках пользователя (HKEY_CURRENT_USER) и в настройках машины (HKEY_LOCAL_MACHINE). Если ключ имеется в HKEY_LOCAL_MACHINE тогда значение в HKEY_CURRENT_USER игнорируется. Их значнения не объединяются.
Когда решается вопрос об запуске автозагрузке значение обоих ключей NoDriveAutoRun
и NoDriveTypeAutoRun
принимается во внимание. Если в каждом из ключей говорится что нужно выключить автозагрузку, то она выключается.
Пример
HKEY_LOCAL_MACHINE | HKEY_CURRENT_USER | ||
---|---|---|---|
NoDriveAutoRun | NoDriveTypeAutoRun | NoDriveAutoRun | NoDriveTypeAutoRun |
здесь мы видим значения NoDriveAutoRun
с 0x08, отключение носителя D и значение для NoDriveTypeAutoRun
с 0x95, отключение съемных и сетевых дисков. Для каждого пользователя NoDriveAutoRun
никогда не используется.
Расположение ключей автозапуска в реестре
Автозагрузка в реестре представлена в нескольких местах:
- Для всех пользователей системы:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
— программы, которые запускаются при входе в систему. Данный раздел отвечает за запуск программ для всех пользователей системы.[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]
— программы, которые запускаются только один раз при входе пользователя в систему. После этого ключи программ автоматически удаляются из данного раздела реестра. Данный раздел отвечает за запуск программ для всех пользователей системы.[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx]
— программы, которые запускаются только один раз, когда загружается система. Этот раздел используется при инсталляции программ, например для запуска настроечных модулей. После этого ключи программ автоматически удаляются из данного раздела реестра. Данный раздел отвечает за запуск программ для всех пользователей системы.- Сервисы:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServices]
— программы, которые загружаются при старте системы до входа пользователя в Windows.[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce]
— программы отсюда загружаются только один раз, когда загружается система.
- Для текущего пользователя:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run]
— программы, которые запускаются при входе текущего пользователя в систему[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]
— программы, которые запускаются только один раз при входе текущего пользователя в систему. После этого ключи программ автоматически удаляются из данного раздела реестра.
Примеры использования записей реестра автозапуска
Например, чтобы автоматически запускать Блокнот при входе текущего пользователя, открываем Редактор реестра (regedit.exe), переходим в раздел [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run] и добавляем следующий ключ:
"NOTEPAD.EXE"="C:\WINDOWS\System32\notepad.exe"
Групповые политики
Только групповые политики оказывают воздействие на NoDriveTypeAutoRun настройки реестра. Настройки политики доступны для каждого пользователя или для каждой машины отдельно в специальных ветках реестра HKLM и HKCU[5][6] Политика описана для машины имеет приоритет выше, чем политика пользователя.
Когда политика включена, групповые политики добавляют NoDriveTypeAutoRun
запись в регистре. Если политика выключена или стоит флаг не сконфигурирован, тогда групповые политики удаляют запись из реестра машины и устанавливают по умолчанию политику пользователя. Тогда система по умолчанию будет действовать как в разделе параметра NoDriveTypeAutoRun.
Имя политик, их место расположения, настройки могут варьироваться в зависимости от системы.
Автозапуск в других операционных системах
Xfce
Управление томами реализовано в файловом менеджере Thunar, который можно настроить, чтобы он выполнял:
- автомонтирование и/или автоматический просмотр съёмных носителей при подключении и вставке.
- запуск программ и открытие файлов на подключаемых носителях.
- запуск программы записи при вставке чистого оптического диска.
- воспроизведение мультимедиа на компакт-дисках, Video CD, DVD и/или портативных плеерах.
- импортирование фотографий с цифровых камер и/или синхронизация с наладонными компьютерами при подключении.
- запуск указанной программы при подключении принтера, USB‐клавиатуры, мыши или графического планшета.
См. также
Примечания
- Мирт и гуава: Эпизод 1. Securelist.ru
- Вирусов не бывает? Раздел «E-mai & IM» (недоступная ссылка). Компьютерра
- https://support.microsoft.com/en-us/help/136214/how-to-test-autorun-inf-files . support.microsoft.com. Дата обращения: 31 октября 2017.
- Enabling and Disabling AutoRun (Windows) (англ.). msdn.microsoft.com. Дата обращения: 31 октября 2017.
- NoDriveTypeAutoRun (англ.). technet.microsoft.com. Дата обращения: 2 ноября 2017.
- NoDriveAutoRun (англ.). technet.microsoft.com. Дата обращения: 2 ноября 2017.