




Монитор процесса позволяет отслеживать активность файлов и реестра различных процессов.
Я согласен с Фрэнси, все утилиты Sysinternals заслуживают внимания (Autoruns тоже обязателен), а Process Monitor, заменяющий старый добрый Filemon и Regmon, драгоценен.
Помимо желаемого использования, очень полезно узнать, почему процесс не работает (например, пытается получить доступ к файлу или разделу реестра, который не существует) и т. д.
Простой способ сделать это без дополнительных инструментов - экспортировать реестр в текстовый файл перед установкой, а затем экспортировать его в другой файл. Затем сравните два файла.
При этом инструменты Sysinternals отлично подходят для этого.
Есть несколько способов. Если вы хотите сделать это самостоятельно на лету, вероятно, вам подойдет WMI. RegistryKeyChangeEvent и его родственники - это те, на кого стоит обратить внимание. Возможно, есть способ контролировать это через классы __InstanceCreationEvent, __InstanceDeletionEvent и __InstanceModificationEvent.
http://msdn.microsoft.com/en-us/library/aa393040(VS.85).aspx
Что касается WMI и реестра:
Существует три класса событий WMI, относящихся к реестру:
Но вы должны знать об этих ограничениях:
С помощью RegistryTreeChangeEvent и RegistryKeyChangeEvent невозможно напрямую указать, какие значения или ключи действительно изменились. Для этого вам нужно сохранить состояние реестра до события и сравнить его с состоянием после события.
Вы не можете использовать эти классы с ульями HKEY_CLASSES_ROOT или HKEY_CURRENT_USER. Вы можете преодолеть это, создав класс WMI, представляющий раздел реестра, который нужно отслеживать:
Определение класса реестра с квалификаторами
и использовать его с производными классами __InstanceOperationEvent.
Таким образом, использование WMI для мониторинга реестра возможно, но не совсем идеально. Преимущество состоит в том, что можно отслеживать изменения в «реальном времени». Еще одним преимуществом может быть постоянная подписка на события WMI:
Получение событий в любое время
метод постоянного мониторинга реестра, т. е. событие, если ваше приложение не запущено.
PhiLho упомянул Автозапуск мимоходом, но я думаю, что он заслуживает подробного рассмотрения.
Он не сканирует весь реестр, а только части, содержащие ссылки на вещи, которые загружаются автоматически (EXE, DLL, драйверы и т. д.), Что, вероятно, вас интересует. Он не отслеживает изменения, но может экспортировать в текст файл, поэтому вы можете запустить его до и после установки и выполнить разница.
Существует python-hids под названием sobek (http://code.google.com/p/sobek-hids/), который может отслеживать некоторые части SO. Он отлично работает для меня для мониторинга изменений файлов, и хотя в документе говорится, что он может отслеживать изменения реестра, он не работает для меня.
Хорошая программа для простого воспроизведения скрытых файлов на основе Python.
Может отслеживать изменения реестра, сделанные конкретной программой.
https://www.nirsoft.net/utils/reg_file_from_application.html
ОБНОВЛЕНИЕ: просто скачайте NirLauncher (который включает все приложения от NirSoft). Это одно из лучших дополнений к вашему набору инструментов Windows. https://launcher.nirsoft.net/
Для меня RegistryChangesView (nirsoft.net/utils/registry_changes_view.html) из пакета NirLauncher был более полезен: он создает два снимка (например, до и после установки), а затем сравнивает их. Результат можно экспортировать в .txt-файл. В моем случае после установки приложения было обнаружено 301 изменение реестра. В то же время RegFromApp (привязанный к процессу msiexec.exe) обнаружил всего 1 изменение.
Regshot заслуживает упоминания здесь. Он сканирует и делает снимок всех параметров реестра, затем вы запускаете его позже, чтобы сравнить с исходным снимком, и он показывает вам все ключи и значения, которые изменились.
При использовании виртуальной машины я использую следующие шаги для проверки изменений в реестре:
HKLM\SYSTEM или HKLM\SOFTWAREТеперь используйте вашу любимую программу сравнения, чтобы сравнить снимки «до» и «после».
Но как это сделать? Используя какую-нибудь инструкцию вроде этой: howtogeek.com/school/sysinternals-pro/lesson5/all?