RegMon для Windows v7.04Авторы: Марк Руссинович (Mark Russinovich) и Брюс Когсуэлл (Bryce Cogswell)
Опубликовано 11 января 2006 г.
ВведениеПримечание: Программы Filemon и Regmon заменены одной программой Process Monitor в версиях Windows, начиная с Windows 2000 SP4, Windows XP SP2, Windows Server 2003 SP1 и Windows Vista. Однако программы Filemon and Regmon оставлены для поддержки устаревших операционных систем, включая и Windows 9x. Программа Regmon предназначена для слежения за реестром. Она показывает, какие приложения обращаются к реестру и в какие разделы, какую информацию они читают или пишут. И все это в реальном масштабе времени. Она делает куда больше, чем инструменты для статического анализа реестра, поскольку позволяет увидеть и понять, как используют реестр различные программы. С помощью статических инструментов можно узнать, какие разделы и значения в реестре изменились. А программа Regmon даст возможность увидеть, когда и как это происходит. Программа Regmon работает в операционных системах Windows NT, 2000, XP, 2003, Windows 95, 98, Me и 64-разрядных версиях Windows для архитектуры x64.
Установка и использованиеПри возникновении вопросов или проблем, связанных с программой Regmon, посетите посвященный ей форум на веб-узле Sysinternals. Для установки программы просто скопируйте файлы на свой жесткий диск и запустите файл Regmon.exe. Пункты меню и кнопки на панели инструментов позволяют включать и выключать отслеживание, деактивировать сбор информации о событиях, управлять прокруткой списка и сохранять содержимое списка в ASCII-файле. C помощью диалогового окна Filter, которое можно открыть, нажав кнопку на панели инструментов или выбрав из меню команду Option|Filter/Highlight (параметры, фильтр или выделение), укажите, какие данные показывать в списке. Подстановочный символ «*» соответствует произвольной строке, фильтры не зависят от регистра букв. Показываются только данные, которые определены во включающем фильтре и при этом не определены в исключающем фильтре. Строки в фильтре разделяются точкой с запятой (';'), например: «regmon;software». Например, если установлен включающий фильтр «HKLM» и исключающий фильтр «HKLM\Software», то программа будет отслеживать обращения ко всем разделам и значениям в ветви HKLM за исключением тех, что принадлежат ветви HKLM\Software. С помощью подстановочных символов можно задавать сложные образцы для сопоставления, что позволяет, к примеру, отслеживать обращения к реестру, сделанные конкретными приложениями. Так, включающий фильтр «Winword*Windows» сообщает программе Regmon, что нужно показывать лишь обращения из программы Microsoft Word к разделам и значениям, содержащим слово «Windows». С помощью фильтра выделения можно указать, какие строки в списке следует выделять цветом. Цвета для выделения устанавливаются командой меню Options|Highlight Colors (параметры | цвета выделения). Программа Regmon может также снабжать события отметками о времени или показывать время, прошедшее с момента последней очистки окна вывода (или с момента запуска программы). Меню Options (параметры) и кнопка с изображением часов на панели инструментов позволяют переходить из одного режима в другой. В зависимости от текущего режима на панели инструментов изображается значок часов или секундомера. Если установлен режим показа истекшего времени, то значение в колонке Time — это число секунд, потребовавшееся файловой системе для обслуживания запросов. Если вы захотите изменить какой-нибудь раздел или значение в списке, выводимом программой Regmon, дважды щелкните соответствующую строку (или нажмите кнопку на панели инструментов со значком программы Regedit). В ответ Regmon запустит программу Regedit и установит курсор на соответствующем разделе реестра. Перейдите по этой ссылке, если хотите узнать о том, как Regmonможет следить за процессом загрузки системы. Эта функция доступна для ОС Windows NT. Как работает программа RegmonВ основе работы Regmon на платформе Windows 9x лежит драйвер виртуального устройства Regvxd.vxd. Он загружается динамически и на этапе инициализации подключается к службе VxD (дополнительную информацию об этой методике см. в нашей статье в номере журнала «Dr. Dobb's Journal» за май 1996 года), чтобы добавить себя в цепочку вызовов 16 функций доступа к реестру, находящихся в ядре Windows 95 (подсистема Virtual Machine Manager — диспетчер виртуальных машин). Все обращения к реестру, будь то из 16-разрядных программ, Win32-приложений или драйверов устройств, проходят через эти функции, а Regmon перехватывает все их вызовы. В операционных системах Windows NT, 2000 и XP программа Regmon загружает драйвер устройства, в котором применяется техника перехвата системных вызовов, которую мы впервые реализовали для NT. Когда компонент, работающий в режиме пользователя, выполняет привилегированный системный вызов, управление передается обработчику программных прерываний, находящемуся в файле NTOSKRNL.EXE (ядро операционной системы Windows NT). Обработчик извлекает из машинного регистра номер системного вызова, который служит индексом для таблицы системных служб, и находит в этой таблице адрес функции, которая должна обрабатывать запрос. Подставив вместо него адрес собственной функции, можно перехватить обращение к системе и таким образом подменить, дополнить или просто запротоколировать вызовы тех или иных служб. Программа Regmon подменяет только адреса функций, имеющих отношение к реестру, но это лишь один пример использования открывающихся возможностей. На платформе Windows .NET Server программа Regmon использует новый механизм обратных вызовов при обращении к реестру. Она регистрирует себя и получает информацию о каждом вызове в тот момент, когда он производится. При запуске на этой платформе Regmon загружает свой драйвер, которому и приходят уведомления о вызовах. Когда Regmon получает информацию об открытии, создании или закрытии ключа, она обновляет внутреннюю хеш-таблицу, в которой хранится соответствие между описателями разделов и путями к ним в реестре. Если же выполняется какой-то вызов с описателем раздела в качестве аргумента, то Regmon ищет запись в этой таблице, чтобы вывести соответствующий разделу путь. Если раздел, на который ссылается описатель, был открыт до запуска Regmon, то соответствующая запись в таблице не будет найдена, и тогда Regmon просто выведет значение раздела. Информация о доступе к реестру записывается в формате ASCII во внутренний буфер, который периодически копируется в список, отображаемый в окне программы. Дополнительную информацию о работе программы Regmon на платформе Windows NT см. в следующих источниках.
Дополнительные сведенияНиже перечислены дополнительные источники информации о реестре в операционных системах Windows NT/2000/XP и Windows 9x/Me:
Статьи о программе Regmon в базе знаний MicrosoftВ следующих статьях из базы знаний Microsoft упоминается об использовании программы Regmon для диагностики и устранения различных ошибок:
Взаимосвязанные утилитыНиже приведен перечень других средств мониторинга, опубликованных на веб-узле Sysinternals:
|
Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
.gif)