Автозапуск

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Автозапуск (англ. 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 для всех окон верхнего уровня. ОС вызвает "базовое" уведомление. Окна верхнего уровня, это те окна, которые являются потомками рабочего стола.

Устройства без раздела, это те устройства, которые не имеют буквы в ярлыке "Мой компьютер". Они не обрабатываются автозапуском .

Когда проводник получает сообщение об изменении раздела, он производит следующие действия:

  1. Проверяет включена ли автозагрузка в реестре. Если автозагрузка выключена для устройств или для данного типа устройств, то проводник не выполняет никаких действий дальше. В этом месте были ошибки.
  2. Проверить в корневой директории вставленного медиа устройства наличие файла autorun.inf, если такой имеется, то обрабатывает его.
  3. Отправка сообщения QueryCancelAutoPlay для всех фоновых окон. Приложение, получив данное сообщение, может заблокировать автозапуск через RegisterWindowMessage. Прочие приложения, фоновые или активные, могут быть уведомлены с помощью IQueryCancelAutoPlay COM интерфейса в версии Windows XP и выше.
  4. Изменяется меню выбора. Пользователь двойным нажатием выберет иконку устройства в проводнике или нажмет на нее правой клавишей мыши, вызвав контекстное меню, которое задается файлом avtorun.inf.
  5. Добавляет из автозагрузки иконку и описание текста на значке дисковода.
  6. Проверяет нажата ли клавиша  ⇧ Shift . Если она нажата в Windows XP то процесс автозагрузки прекратится, если в версии Windows Vista и выше, нажатая клавиша никак не повлияет на процесс.
  7. Завершение, тут три возможных события:
    • не требуется дальнейших действий
    • выплывет окно "Действия при автозагрузки", либо выполнит приложение описанное ключами 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
0x08
(Не установлено)
0x03FFFFFF
0x95

здесь мы видим значения 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. Мирт и гуава: Эпизод 1. securelist.com
  2. Вирусов не бывает? Раздел «E-mai & IM». Компьютерра
  3. https://support.microsoft.com/en-us/help/136214/how-to-test-autorun-inf-files. support.microsoft.com. Проверено 31 октября 2017.
  4. Enabling and Disabling AutoRun (Windows) (англ.). msdn.microsoft.com. Проверено 31 октября 2017.
  5. NoDriveTypeAutoRun (англ.). technet.microsoft.com. Проверено 2 ноября 2017.
  6. NoDriveAutoRun (англ.). technet.microsoft.com. Проверено 2 ноября 2017.