Одной из особенностей Windows Vista является
технология ReadyBoost, система кэширования
позволяющая ускорить работу с дисками за счет использования флеш-накопителей в
качестве дискового кэша. Я объяснял работу ReadyBoost в одной из своих статей,
основная идея состоит в том, что флэш-память имеет существенно меньшие задержки
случайного доступа нежели диски - ReadyBoost перехватывает обращения к дискам и
перенаправляет запросы случайного доступа на кэш в случае если в нем хранятся
необходимые данные, но последовательные запросы обращаются непосредственно к
диску. В ходе моих презентаций я вставлял USB-накопитель
и показывал слушателям диалог Автозапуска где появилась опция конфигурирования
устройства как ReadyBoost кэша:
Во время моего первого доклада демонстрация прошла без сучка и задоринки, но
в последующих попытках я не получал диалога автозапуска. В качестве временной
меры мне пришлось вручную открывать свойства накопителя в проводнике и
показывать опцию "Speed up my system" в диалоге
автозапуска.
В последний раз я читал доклад в Барселоне на
TechEd/ITforum в Ноябре и перед сессией у меня
было достаточно времени - я решил разобраться почему же автозапуск не работает.
В первую очередь я проверил настройки автозапуска в Панели управления. Некоторые
опции были выставлены в "Ask me every time" что не должно было влиять на запуск,
но и после восстановления их определений в значения по умолчанию автозапуск не
появился:
Теперь мне уже надо было лезть внутрь настроек реестра и действий файловой
системы для того что бы понять почему Explorer не
понимает настроек Панели управления по автозапуску. Я запустил
Process Monitor, сконфигурировал его на слежение за действиями
Проводника при обращении к реестру и снова попытался вставить свою флэшку. После
чего я остановил перехват и перешел к данным, которые
собрал Process Monitor...
Прямой просмотр выданных 22000 событий означал бы
затрату многих часов, но и очевидных ошибок, которые бы стоило искать, тоже не
наблюдалось, так что я задумался о некоторых ключевых словах которые бы привели
меня к правильной строчке. Сначала я попробовал "autoplay",
но ничего не нашел. Я знал, что Проводник ищет файл Autorun.inf в корне съемного
диска, в нем могут быть указания на иконку или исполняемый файл который следует
запустить при двойном клике на диске, так что следующим шагом я стал искать "autorun".
Первая найденная запись похоже была мне не интересна, так как ссылалась на метку
монтирования тома, информацию которую Windows генерит
каждый раз когда видит новый диск:
Следующие же найденные строки была чуть ниже и все обращались к настройкам
групповой политики:
Запросы к первым двум значениям выдали ошибки
NAME NOT FOUND, что означало что политики не заданы, а вот запрос к HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoDriveTypeAutoRun
оказался удачным. Process Monitor показал какое значение получил Проводник из
реестра по этому ключу:
Я не знал как интерпретировать число 255, так что я полез в Сеть в поисках "nodrivetypeautorun"
и обнаружил, что это битовая маска определяет у каких типов устройств выключен
Автозапуск. Значение 255 (0xFF) отключает Автозапуск
для всех устройств!
Я использовал функцию
Process Monitor для запуска
Regedit и перехода непосредственно к ключу, открытому в программе, и
изменил значение на 0, что включало Автозапуск для всех устройств. Дальше
следовало протестировать изменения и я вытащил и тут же вставил обратно флэшку -
к моему удовольствию нужный мне диалог появился. Обратите внимание, что на моей
Windows Vista автозапуск не означает автоматического
старта Autorun.inf, а лишь предоставляет мне выбор действий по открытию
накопителя, так что никакой угрозы безопасности не возникает.
Дело было почти закрыто, но оставалась еще одна деталь.
Автозапуск был выключен через настройки Групповой политики при подключении к
домену Microsoft. Это объясняло то, что в первые разы
автозапуск все-таки работал - мои первые показы были еще до того, как я
присоединился к Microsoft. Это так же означало и то,
что в следующий мой логин в домен значение в реестре снова вернется к прежнему
значению, что снова сломает мой автозапуск.
Можно было исключить систему из домена или никогда не
соединяться с ним. Однако, так как у меня были привилегии локального
администратора, я понял что могу избежать изменений Групповой политики в
отношении этого ключа реестра просто установив нужные мне права на него.
Установка политик происходит под аккаунтом
Local System, так что я просто открыл Regedit и убрал
возможность записи для Local System:
Теперь я был уверен, что мои демонстрации будут работать. Дело было закрыто.
Источник:
http://blogs.technet.com/markrussinovich/default.aspx
Читай так же: