Skip to main content

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 – снимок с экрана

Установка и использование

При возникновении вопросов или проблем, связанных с программой 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", Марк Руссинович и Брайс Когсуэлл, Dr. Dobb's Journal, январь 1997.

  • "Утилиты для NT – взгляд изнутри", Windows NT Magazine, февраль 1999.

Дополнительные сведения

Ниже перечислены дополнительные источники информации о реестре в операционных системах Windows NT/2000/XP и Windows 9x/Me:

  • Внутреннее устройство Windows 2000, третье издание, Дэвид Соломон и Марк Руссинович, Питер, Русская редакция 2001

  • "Исследование реестра Windows 95", Марк Руссинович и Брайс Когсуэлл, Windows Developer's Journal, октябрь 1996

  • "Внутреннее устройство реестра Windows NT ", Марк Руссинович, Windows NT Magazine, апрель 1997

  • Amazon.com " Inside the Windows 95 Registry", Ron Petrusha, O'Reilly and Associates, 1996

  • Amazon.com " Managing the Windows NT Registry" Paul Robichaux и Robchauxg , O'Reilly and Associates, 1998

  • Amazon.com " Windows 98 Registry For Dummies", Glenn Weadock, IDG Press, 1998

  • Amazon.com " Using the Windows 98 Registry", Jerry Honeycutt, Que, 1998

Статьи о программе Regmon в базе знаний Microsoft

В следующих статьях из базы знаний Microsoft упоминается об использовании программы Regmon для диагностики и устранения различных ошибок:

Взаимосвязанные утилиты

Ниже приведен перечень других средств мониторинга, опубликованных на веб-узле Sysinternals:

  • FileMon - отслеживание доступа к файлам;

  • PortMon - отслеживание обращений к последовательным и параллельным портам;

  • Process Monitor — слежение за процессами и потоками;

  • DiskMon - отслеживание работы жесткого диска;

  • DebugView - отслеживание вывода отладочной информации.

К началу страницы К началу страницы