Примеры мониторинга системного реестра
Посетителей: 21280 | Просмотров: 28461 (сегодня 0)
Введение
Более половины всех пользователей ПК в какой-то момент задумываются об автоматизации настроек своей операционной системы. Всем известно, что в операционных системах Windows централизованным хранилищем для большинства настроек самой системы и установленных приложений является системный реестр. В реестре хранятся сотни тысяч параметров, которые отвечают за различные настройки. Зная, что в разделе HKEY_CURRENT_USER расположены настройки учетной записи пользователя, в HKEY_LOCAL_MACHINE – настройки компьютера, а раздел HKEY_CLASSES_ROOT отвечает за запуск необходимой программы при открытии файла с помощью проводника, область поиска необходимого параметра сокращается, хотя найти нужный параметр все равно очень сложно. Использовать твикеры реестра не рекомендуется, так как они могут записывать в реестре ненужные разделы и параметры, а поиск в интернете ничего не дает. В этом случае вам следует воспользоваться программами, предназначенными для мониторинга реестра. В этой статье речь пойдет о RegShot и Process Monitor – утилите Sysinternals, предназначенной для мониторинга операционной системы Windows, которая в режиме реального времени отображает активность файловой системы, реестра, а также процессов и потоков.
Использование программы RegShot
RegShot – это небольшая утилита, предназначенная для фиксации изменений в системном реестре операционных систем Windows. Эта утилита может делать снимки системного реестра, сравнивать два снимка и находить между ними все изменения. Все настройки программы сохраняются в файле конфигурации regshot.inf, а языковые настройки хранятся в файле language.inf. Основным преимуществом программы является то, что она не интегрируется в систему и не записывает в реестр никакой информации. Рассмотрим принципы работы этой утилиты на простом примере.
В этом примере попробуем проследить за изменениями, связанными с одной из настроек браузера Internet Explorer. Для того чтобы проследить за изменениями, выполните следующие действия:
- Загрузите программу, перейдя по следующей ссылке, распакуйте содержимое архива и запустите файл regshot.exe;
- Перед тем как вы начнете вносить изменения в настройки браузера, сделайте первый снимок реестра, нажав на кнопку «1й снимок»;
После того как первый снимок будет сделан, откройте настройки браузера («Сервис» > «Свойства обозревателя» или введите inetcpl.cpl в поле поиска меню «Пуск» или в диалоге «Выполнить»). Перейдите на вкладку «Дополнительно», на опции «Подчеркивать ссылки» установите переключатель на «Никогда» и нажмите на кнопку «Применить»;
Вернитесь в программу RegShot и нажмите на кнопку «2й снимок» для создания снимка реестра с измененным параметром;
Программа RegShot позволяет сохранять изменения реестра в текстовый и в HTML форматы. Для того чтобы выбрать формат отчетов, установите переключатель на нужной опции в разделе «Сохранить файл отчетов как:».
В утилите RegShot вы можете также указать путь для сохранения файлов. Для этого введите путь вручную в поле «Путь для сохранения» или воспользуйтесь кнопкой обзор для выбора папки при помощи диалогового окна «Обзор папок».
После того как второй снимок реестра будет доделан нажмите на кнопку «Сравнить».
По завершению сравнения снимков реестра откроется программа установленная по умолчанию, предназначенная для открытия выбранного вами типа файла. В данном случае, так как был выбран текстовый формат, отчет открывается в программе «Блокнот». На следующем скриншоте выделены строки, отвечающие за изменение данной настройки.
После того как отчет будет сформирован вы можете очистить из буфера программы 1й, 2й снимок, а также очистить оба снимка сразу.
Отчет в формате HTML выглядит аккуратней и является более удобным, так как в нем строки со старым значением выделены зеленым цветом, для лучшего восприятия.
Теперь, после того как изменения видны, можно написать reg-файл, отвечающий за данную настройку. Если вы боитесь сделать в reg-файле ошибку, зайдите в редактор реестра и внесите изменения. После этого экспортируйте изменения в reg-файл и в блокноте удалите все ненужные строки.
В данном случае должен получиться такой reg-файл:
Если вам нужно найти сразу несколько параметров реестра, отвечающих за разные настройки, лучше всего находить эти параметры поочередно.
Использование программы Process Monitor
Если утилита RegShot предназначена только для фиксации изменений в системном реестре, то утилита Process monitor от Sysinternals, которая написана на основе утилит FileMon и RegMon, предназначена для мониторинга операционной системы Windows. Она в режиме реального времени отображает активность файловой системы, реестра, а также процессов и потоков. При помощи этой утилиты вы можете выполнять следующие действия:
- отслеживать запуск и завершения работы процессов и потоков, включая информацию о коде завершения;
- собирать данные о параметрах операций ввода и вывода;
- устанавливать фильтры для отображения только нужной информации;
- записывать в журнал все операции во время загрузки системы.
и многое другое.
В этой части статьи я расскажу только о том, как можно следить за изменениями системного реестра при помощи этой утилиты. На примере мы попробуем проследить за изменениями в реестре при изменении браузера, используемого по умолчанию. Для этого выполните следующие действия:
- Загрузите программу ProcessMonitor с сайта Sysinternals.com, распакуйте содержимое архива и запустите файл Procmon.exe. Для работы утилиты Process Monitor необходимо зайти под учетной записью, входящей в группу «Администраторы»;
- Перед запуском этой утилиты в первый раз отобразится диалоговое окно с лицензионным соглашением. Прочитайте его и нажмите на кнопку «Agree»;
В случае появления запроса контроля учетных записей пользователей предоставьте подтверждение.
В окне Process Monitor вы можете увидеть все изменения системы в режиме реального времени. Вы можете перетаскивать колонки, изменить их порядок и настроить отображение столбцов утилиты. Для этого в меню «Options» выберите команду «Select Columns» или нажмите правой кнопкой мыши на любом месте заголовка столбцов и в контекстном меню выберите команду «Select Columns». В рамках этой статьи я не буду акцентировать внимание на значении выбираемых столбцов.
По умолчанию, утилита Process Monitor следит за системными файлами, реестром, процессами, сетевой активностью, а также за событиями профилирования. Так как в этом примере нужно проследить только за системным реестром, оставьте активной только кнопку «Show Registry Activity», как показано на следующем скриншоте:
- В меню «Filter» выберите команду «Filter»;
- Воспользуйтесь комбинацией клавиш Ctrl+L;
- Нажмите на кнопку «Filter» на панели инструментов программы.
Диалоговое окно фильтра позволяет указывать атрибуты, которые будут отображаться или исключаться событиями, соответствующими значениям атрибутов. В этом примере нужно воспользоваться только тремя типами атрибутов:
- EventClass – тип события, охватывающий один из основных классов событий (FileSystem, Network, Process, Profiling или Registry);
- Operation – действия, которые выполняет система;
- Process Name – имя процесса, за которым необходимо следить.
В этом примере будут использоваться только некоторые значения атрибута Operation. Краткое описание некоторых действий:
RegCloseKey – закрывает дескриптор указанного раздела реестра;
RegOpenKey – открывает дескриптор указанного раздела реестра;
RegCreateKey – создает дескриптор указанного раздела реестра;
RegQueryKey – возвращает значение параметров, связанных с открытым разделом реестра;
RegEnumKey – перечисляет подразделы указанного открытого раздела реестра;
RegDeleteKey – удаляет дескриптор указанного раздела реестра;
RegSetValue – изменяет значение указанного параметра реестра;
В диалоговом окне «Process Monitor Filter» для начала удалите все фильтры. Затем выполните следующие действия:
- Из первого раскрывающегося списка выберите атрибут «EventClass». Во втором раскрывающемся списке оставьте значение «is». В третьем раскрывающемся списке выберите значение «File System», а затем выберите «Exclude». Нажмите на кнопку «Add».
Повторите эти действия для классов «Network», «Process» и «Profiling».
Также вместо того чтобы исключать некоторые действия, вы можете просто установить «Include» для действия «RegSetValue».
После того как нужные фильтры будут выбраны, нажмите на кнопку «ОК». Во время применения фильтров вы увидите следующий диалог:
Остановите мониторинг реестра до того как вам нужно будет проверять изменения. Для этого нажмите на кнопку «Capture» на панели инструментов, или воспользуйтесь комбинацией клавиш Ctrl+E. Очистите содержимое программы, нажав на кнопку «Clear» или при помощи комбинации клавиш Ctrl+X.
Если у вас установлен по умолчанию браузер Internet Explorer, откройте Opera и дождитесь появления диалога с предложением сделать его по умолчанию. После появления этого диалога перейдите в Process Monitor и включите мониторинг при помощи кнопки «Capture». Снова перейдите в Opera и установите его браузером по умолчанию.
После выполнения этих действий вернитесь в Process Monitor и остановите мониторинг. Окно программы Process Monitor будет выглядеть примерно следующим образом:
Среди отобразившихся значений нетрудно заметить, что все изменения, которые относятся к установке браузера по умолчанию, хранятся в разделе HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts. Значение измененного параметра вы можете увидеть в столбце Details или открыв диалог свойств события:
Как посмотреть изменения в реестре Windows
Время от времени у пользователей и системных администраторов может возникать необходимость посмотреть изменения в реестре Windows за определенный период. Это может быть вызвано желанием посмотреть, какие изменения вносят определенная программа или действия пользователей.
Посмотреть изменения, внесённые в реестр Windows, можно как встроенными в операционную систему средствами, так и при помощи стороннего ПО. Начнём с первых.
Кроме того, упомянем ещё, что всё сводится к двум методам: сравнению двух «снимков» реестра, сделанных в разное время, или мониторингу изменений в режиме реального времени.
Самый доступный способ посмотреть, какие в реестр были внесены изменения, это использование встроенной в Windows утилиты fc.exe. Плюсом этого метода является отсутствие надобности искать дополнительное ПО. В общем-то, утилита fc.exe используется не только для просмотра изменений реестра, а для сравнения двух файлов или наборов файлов вообще. Таким образом, становится понятно, что нам нужны два «снимка» реестра.
Экспортируем предварительно весь реестр или только нужную нам ветку. Допустим, у нас есть два файла: 1.reg и 2.reg, которые мы положили на диск C. Тогда для их сравнения можно использовать команду
В данном случае мы вывели результат работы команды в текстовый файл. Но я бы рекомендовал использовать более продвинутый формат и (или) редактор посильнее Блокнота, чтобы не было проблем с кодировкой.
Выше я использовал MS Word и формат .doc.
Проблема использования fc.exe кроется в том, что результат её работы является малочитаемым. Скриншот выше говорит о том, что в ветку HKEY_LOCAL_MACHINE\SOFTWARE\Test был добавлен параметр Primer. Но вряд ли получится это понять, если не знать об этом заранее. Полноценным инструментом анализа fc.exe не назовешь. Эта утилита больше подходит, когда вы сами вносите изменения в реестр, и хотите убедиться, что они были внесены (но не хотите бродить по веткам реестра в regedit).
Поэтому перейдем к другой утилите, которая, к сожалению, уже не входит в состав современных версий Windows, но может быть добавлена. Называется она WinDiff. Добавить её можно через установку пакетов Microsoft Windows SDK. К сожалению, после Windows 7 WinDiff исключили и из этих пакетов, но скачать её можно и отдельно, например, по этой ссылке.
Чтобы использовать утилиту WinDiff из командной строки Windows, поместите её в каталог %WINDIR%\System32. Теперь для сравнения двух файлов реестра из примера нам достаточно ввести команду
Откроется графический интерфейс утилиты, который можно видеть на скриншоте выше. Разберемся, как читать вывод программы WinDiff.
- Строки на белом фоне означают совпадение содержимого файлов;
- Строки на красном фоне показывают содержимое первого (левого) файла, которого нет во втором (правом);
- Строки на желтом фоне показывают содержимое второго (правого) файла, которого нет в первом (левом).
У нас есть желтая строка с содержимым «Primer»=»». Это говорит о том, что во втором файле появился параметр Primer с пустым значением. И находится он в HKEY_LOCAL_MACHINE\SOFTWARE\Test. Так как второй файл был сохранен позже первого, можно сделать вывод, что этот параметр был добавлен, а не удален.
Перейдем к сторонним утилитам мониторинга реестра.
Популярным бесплатным решением является программа Regshot. Программа тоже работает со снимками реестра, причем делает их сама, а не анализирует заранее сохраненные файлы. В этом её минус. А плюс в том, что она очень проста.
Сперва нужно сделать первый снимок реестра.
Некоторое время уйдёт на этот процесс. Далее проводим операции с компьютером, которые хотим зафиксировать, и делаем второй снимок.
После чего их можно сравнить.
После окончания процесса сравнения программа автоматически откроет файл с результатами работы. Ещё одним плюсом Regshot является то, что этот файл легко читается. Правда, стоит отметить, что в нём будет куча изменений реестра, которые могут показаться своеобразной азбукой Морзе. В моем случае оба снимка были сделаны с разницей меньше минуты. Мои действия заключались только в том, что я удалил параметр Primer. Как видите, программа это зафиксировала. А также зафиксировала и много других изменений. «Под капотом» операционной системы постоянно что-то происходит, и большая часть из этого скрыта от наших глаз.
Более ненужные снимки можно удалить, нажав кнопку Очистить в интерфейсе программы. Скачать программу Regshot можно по этой ссылке.
Последним рассматриваемым в этой статье средством мониторинга реестра Windows будет программа Registry Live Watch. Пожалуй, уже из названия можно понять, что данная программа способна следить за изменением реестра в реальном времени.
Программа тоже крайне проста и, по сути, даже не имеет толком настроек. Вы лишь указываете ветку реестра, за которой требуется следить, и запускаете мониторинг кнопкой Start Monitor.
Однако программа имеет серьезный недостаток, который, по большей части нивелирует саму идею мониторинга. Она выдаёт лишь сообщения об изменении в наблюдаемой ветке реестра, но не пишет, какие именно изменения были внесены. Вторым недостатком является то, что Registry Live Watch не умеет мониторить весь реестр целиком. Скачать программу можно здесь.
Под конец статьи поговорим о том, как автоматизировать сбор информации о реестре не прибегая к стороннему ПО. Сделать это можно при помощи скрипта, содержащего команду reg export , синтаксису которой посвящена отдельная статья. Запуская данный скрипт по расписанию, вы получите ряд снимков реестра, которые можно будет при необходимости сравнить.