Поиск и устранение неисправностей

Аарон полагал, что автор программы установки полагал, что, потому что Windows XP была так совершенная Microsoft, никогда не должен будет выпускать другую версию Windows, не было никакой причины проверить на более новые версии. Он применял режим эмуляции Windows XP, который, между прочим, находится программе о том, что ­версия операционной системы фактически и попробована еще раз. Это перестало работать точно таким же образом. Дополнительно, установка, работавшая отлично на недавно установленных копиях Windows Vista, которому не применялись к политикам организации это.

Он запустил Procmon, выполнил программу установки снова на грани сообщения об ошибке и затем остановил трассировку Procmon. Он перетащил значок панели инструментов креста нитей Procmon по сообщению об ошибке, чтобы применить фильтр, чтобы показать только события, включающие процесс владельца окна, Setup.exe. (См. рисунок 16-18.)

Рис. 16-18. Procmon после фильтрации с "Включают Процесс Из Окна."

Из-за "0" в заголовке в сообщении об ошибке, мысль Аарона проблема могла бы произойти из-за программы, ищущей что-то и не находящей это, таким образом, он щелкнул правой кнопкой по элементам в столбце Result и исключил события с кодами результата, он фигурировал, не будет интересно: УСПЕХ, FAST ОТВЕРГНУТЫЙ IO, ФАЙЛ, ЗАБЛОКИРОВАННЫЙ С ТОЛЬКО ЧИТАТЕЛЯМИ, REPARSE, БУФЕРИЗУЕТ ПЕРЕПОЛНЕНИЕ, и КОНЕЦ ФАЙЛА. (Аарон обычно исключает "известный - хорошие" коды результата вместо включения потенциально плохих результатов, потому что легко отсутствовать немного и отфильтровать важные записи.)

Когда он смотрел на остающиеся записи, одной вещью, которая быстро выделилась, было имя "DoesNotExist", появляющийся в путях около конца результатов. Он использовал функцию выделения Прокмона, чтобы заставить их выделиться в контексте окружающих событий. (См. рисунок 16-19.)

Рис. 16-19. Выделение "DoesNotExist" в фильтруемых результатах.

Поскольку окружающий контекст не давал ему общее представление о том, что сразу произошло до этих отказавших поисков, он использовал в своих интересах неразрушающую фильтрацию Прокмона и удалил правило фильтра тот исключенный УСПЕХ результаты. Как можно видеть в рисунке 16-20, был набор доступов файла к D:\setup.ini и затем некоторым к D:\autorun.inf перед предпринятым доступом реестра к HKLM\Software\DoesNotExist\Info.

Рис. 16-20. Вывод на экран УСПЕХА заканчивается до отказавшего открытия реестра.

Он открыл свойства события для первого события RegOpenKey и смотрел на стек вызова (показанный в рисунке 16-21), чтобы понять то, как и почему Setup.exe пытался открыть тот ключ. Строка 12 из стека показали, что в произвольном порядке именованный компонент программы установки вызывал в GetPrivateProfileStringA, который вел (в строке 7) к попытке открыть регистрационный ключ.

Рис. 16-21. Вызовите стек неудачной попытки открыть HKLM\Software\DoesNotExist\Info.

GetPrivateProfileString - один из программистов Windows API, может использовать, чтобы читать из файлов, которые форматируются как старые.ini файлы от 16-разрядного Windows. И поскольку его документация указывает, те доступы могут быть перенаправлены к реестру с IniFileMapping. Аарон, расположенный IniFileMapping, который перенаправил autorun.inf к "DoesNotExist" (показанный в рисунке 16-22), удалил это, и перезагрузил — установка, тогда работавшая правильно.

 Рис. 16-22. Запись IniFileMapping, перенаправляющая Autorun.inf к несуществующему регистрационному ключу.

Анализ.

Аарон, найденный технической причиной отказа установки, но он хотел понять первопричину и почему IniFileMapping был сконфигурирован.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: