Введение
Более половины всех пользователей ПК в какой-то момент задумываются об автоматизации настроек своей операционной системы. Всем известно, что в операционных системах 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-файл:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main]
"Anchor Underline"="no"
Если вам нужно найти сразу несколько параметров реестра, отвечающих за разные настройки, лучше всего находить эти параметры поочередно.
Использование программы 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».
- Из первого раскрывающегося списка выберите атрибут «Process Name». Во втором раскрывающемся списке оставьте значение «is». В третьем раскрывающемся списке введите имя процессов, за которыми нужно проследить. В этом примере мы будем следить за процессами iexplore.exe и opera.exe.
- Из первого раскрывающегося списка выберите атрибут «Operation». Во втором раскрывающемся списке оставьте значение «is». В третьем раскрывающемся списке выберите значения, которые отображены на следующем скриншоте.

Также вместо того чтобы исключать некоторые действия, вы можете просто установить «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 Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.htm\UserChoice]
"Progid"="Opera.HTML"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.html\UserChoice]
"Progid"="Opera.HTML"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xhtm\UserChoice]
"Progid"="Opera.HTML"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xhtml\UserChoice]
"Progid"="Opera.HTML"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.xht\UserChoice]
"Progid"="Opera.HTML"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mht\UserChoice]
"Progid"="Opera.HTML"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mhtml\UserChoice]
"Progid"="Opera.HTML"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.http\UserChoice]
"Progid"="Opera.HTML"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.https\UserChoice]
"Progid"="Opera.HTML"