Обзоры утилит от Sysinternals.com:
- Process Explorer (контроль за процессами)
- PageDfrg (дефрагментация системных файлов)
- Autoruns (управление автозагрузкой)
- FileMon (монитор файловой системы)
- RegMon (монитор реестра)
Свободно распространяемая на www.sysinternals.com утилита Registry Monitor предоставляет возможность собрать информацию об обращениях к реестру Windows. Утилита RegMon записывает в log-файл абсолютно все обращения к реестру, включая обращения самой системы и всего программного обеспечения, которое работает на момент сбора данных. Программа имеет настраиваемый фильтр, при помощи которого можно собрать информацию об обращениях к реестру только одной или нескольких программ, либо исключить из наблюдения определенные программы.
Интерфейс утилиты RegMon достаточно прост и будет подробно рассмотрен в этой статье. Будут даны рекомендации по способам фильтрации собранной информации, по решению конкретных вопросов, связанных с определением конкретных разделов реестра, к которым обращается программа.
Внешний вид Registry Monitor показан на рисунке ниже.
- File:
- Open открывает ранее собранный и сохраненный лог-файл для анализа в Registry Monitor-е. Будьте внимательны, открывая лог, текущие собранные данные будут потеряны, поэтому, если они нужны, то сохраните предварительно собранные данные в файл.
- Save сохраняет собранные данные в файл.
- Save as... сохраняет собранные данные в файл.
- Process Properties... свойства процесса. Если в окне, где отображены собранные данные, выделить любую строку, то данный пункт меню станет доступен и при его выборе откроется окно с информацией о том процессе, обращение которого к реестру выделено. Пример окна с информацией о процессе показан ниже.
- Capture Events переключатель, который включает или приостанавливает сбор сведений об обращениях к реестру.
- Exit выход.
- Edit:
- Copy копирует в буфер обмена выделенную строку.
- Delete удаляет выбранную строку.
- Include Process быстрая настройка фильтра. После применения этого пункта меню будут отслеживаться обращения к реестру только указанного процесса. Чтобы отменить эту настройку исправьте фильтр (о чем будет рассказано ниже).
- Exclude Process исключить процесс. Обращения данного процесса более не будут попадать в собранные данные и он, таким образом, будет исключен из мониторинга.
- Include Patch будут собираться данные только при обращении к выделенному в момент применения команды меню разделу реестра и его подразделам. Для отмены отслеживания только определенного раздела реестра исправьте фильтр, о чем более подробно будет рассказано далее.
- Find... поиск строки в собранных данных в окне Registry Monitor.
- Regedit Jump... если выделить в окне Registry Monitor строку и выбрать этот пункт меню, то будет запущен редактор реестра RegEdit и в нем будет автоматически развернуто дерево разделов того раздела, имя которого находится в выделенной строке Registry Monitor-а. Двойной клик мышью по любой строке собранных данных в RegMon выполняет такое же действие, т.е. открывает RegEdit сразу на том ключе, к которому было зафиксировано обращение процесса.
- Clear Display очищает экран от собранных данных. Будьте осторожны, если данные представляют интерес, то не забудьте предварительно сохранить их в файл.
- Options:
- Font... открывает диалоговое окно выбора шрифта, которым будет отображаться собранная информация в окне Registry Monitor.
- Highlight Colors... открывает диалоговое окно выбора цвета для строк и текста, которые необходимо подсвечивать в собранных данных. Более подробно о подсветке строк смотрите ниже, в настройках фильтра.
- Filter/Highlight... открывает окно настройки фильтра и подсветки строк. Пример этого окна показан ниже.
В данном примере собирается информация об обращениях к реестру всех процессов, за исключением IEXPLORE.EXE и Explorer.EXE, причем, все обращения к реестру процесса csrss.exe подсвечиваются в окне другим цветом. Галки внизу окна позволяют собирать только определенные события, как то:
- Log Opens включает или отключает сбор информации о процессах, которые открывают ключи реестра.
- Log Reads включает или отключает сбор информации о процессах, которые читают ключи реестра.
- Log Writes включает или отключает сбор информации о процессах, которые пишут в ключи реестра.
- Log Successes включает или отключает сбор информации о процессах, любое обращение которых к реестру было удачно (т.е., к примеру, процесс смог успешно считать или записать значение).
- Log Errors включает или отключает сбор информации о процессах, любое обращение которых к реестру закончилось ошибкой (например, процесс не нашел определенный ключ реестра).
В этом же окне кнопка Defaults сбрасывает все сделанные настройки фильтра в значениях, при которых будут собираться все данные.
- History Depth... позволяет настроить количество строк, которые будут запоминаться Registry Monitor-ом. Именно такое количество строк затем будет сохранено в лог-файле работы RegMon-а. Для хранения всех строк используется значение 0.
- Always On Top включение этого параметра позволит всегда видеть окно RegMon-а выше всех окон, что весьма удобно при сборе данных от нескольких приложений, между которыми необходимо переключаться.
- Auto Scroll этот параметр позволяет включить прокрутку окна с собранными данными. Последнее обращение к реестру всегда будет видно на экране.
- Clock Time если этот параметр выключен, то в лог будет записано время обращения процесса к реестру, относительно времени запуска Registry Monitor. Если включен, то будет записано системное время.
- Show Milliseconds если предыдущий параметр включен, т.е. в лог записывается системное время, то имеет смысл включить и этот параметр. В этом случае, к системному времени будут записываться и миллисекунды, что повысит точность определения времени обращения процесса к реестру.
- Log Boot выбор этого параметра включает мониторинг обращения к реестру во время загрузки системы. Т.е. после его выбора надо перезагрузиться и Registry Monitor запишет в лог-файл с именем REGMON.LOG, находящийся в папке, где установлена Windows, все обращения к реестру на протяжении загрузки системы. Такой лог-файл будет иметь размер в несколько десятков мегабайт. Запись обращений к реестру будет продолжаться до тех пор, пока не будет запущен RegMon или до следующей перезагрузки системы.
RegMon может быть применен для решения практически любых задач, когда есть интерес узнать, куда, к каким ключам реестра программа обращается в ходе своей работы. Иногда требуется выяснить, где хранятся настройки программы, какие ключи используются в ходе ее работы. Это бывает полезно для решения проблем при настройке безопасности, при настройке экспорта ключей реестра для создания резервных копий настройки программного обеспечения, для внесения изменений в настройки программы, которые не документированы производителем, и доступ к которым есть только через реестр и т.д.
Для примера я решил выяснить, где Outlook Express хранит правила для сортировки сообщений. Это позволит настроить автоматический экспорт нужной ветки реестра и всегда иметь архивную копию правил сортировки. Наличие такой копии позволит восстановить правила сортировки за пару минут, что при большом количестве правил сэкономит очень много времени.
Итак, запустим RegMon. Настраивать пока фильтр не будем. Включим опцию Always On Top, чтобы окно RegMon не «убегало» на задний план. При запущенном RegMon-е откроем Outlook Express. Сразу после окончания его загрузки нажмем кнопку Capture или выберем пункт меню File Capture Events, чтобы остановить сбор данных. Пример окна Registry Monitor после запуска Outlook Express с остановленным процессом сбора информации показан ниже.
В данном случае интересны обращения к реестру только процесса msimn.exe, поэтому щелкнем на нем правой кнопкой и выберем Include Process, либо выберем в меню Edit Include Process. На запрос о том, хотим ли мы применить этот фильтр к уже собранным данным можно ответить и положительно и отрицательно, это не имеет значения. Теперь нужно очистить окно Registry Monitor. Для этого выберите Edit Clear Display. Последний штрих в подготовке сбора данных донастройка фильтра. Для этого выберем Options Filter/Highlight. В настройке фильтра, внизу, снимем все галки за исключением Log Writes и Log Successes, настроив, таким образом, отсеивание всех обращений к реестру за исключением успешной записи в реестр значений процессом msimn.exe. Пример настройки фильтра показан ниже.
После того, как фильтр настроен, нужно создать в Outlook Express правило для почты. Чтобы создать правило в Outlook Express, выберите Сервис Правила для сообщений Почта. В открывшемся окне создайте правило. Пример уже созданного правила показан на следующем рисунке.
После того, как правило настроено, нажмите OK в этом окне. Вы вернетесь в окно, показанное ниже.
Теперь проверьте, что в Registry Monitor включен сбор данных и окно очищено от собранных ранее данных. После нажатия в окне, показанном на рисунке 4, кнопки OK Outlook Express запишет в реестр созданное правило. Нажмите OK. Registry Monitor соберет данные об успешной записи в реестр процессом msimn.exe информации. Окно RegMon-а с собранной информацией показано на следующем рисунке.
Таким образом, мы получили информацию о разделе, в котором Outlook Express хранит настройки правил. Сохранение одного правила потребовало записи 23 значений. Теперь нужно найти самый верхний раздел реестра из тех, имена которых сейчас находятся в столбце Patch Registry Monitor. Подведите курсор по очереди к каждому значению в столбце Patch и во всплывающей подсказке будет выведен путь к разделу реестра. Найдите самую короткую запись. В данном случае это HKEY_CURRENT_USERIdentities{D7691494-4CF1-4D7F-9A0F-A700B85345C2}SoftwareMicrosoftOutlook Express5.0RulesMail 00. Щелкните в окне Registry Monitor по записи с самым коротким путем два раза левой кнопкой мыши. Откроется редактор реестра, в котором автоматически будет развернуто дерево разделов до раздела, по которому был выполнен двойной щелчок. Окно реестра показано на следующем рисунке.
Таким образом, мы выяснили где Outlook Express хранит настройки правил. Теперь при написании скрипта для ежедневного бэкапа можно будет включить в него строку, которая выполнит экспорт правил Outlook Express в reg-файл, который затем будет помещен в резервную копию на сервер или на другой носитель.
Рассмотренный пример не самый сложный, он призван показать методику работы с Registry Monitor, поняв которую найти все ключи программы в реестре становится не такой уж и сложной задачей.