double arrow

Случай Недостающей Ассоциации Папки

Пользователь нашел, что любая попытка открыть любую папку в Windows Explorer привела к сообщению об ошибке как показанный в рисунке 16-23: "Этому файлу не связывали программу с этим для того, чтобы выполнить это действие." Это произошло всякий раз, когда он дважды щелкнул по папке по своему рабочему столу или щелкнул по Компьютеру, Пульту управления, Документам, Изображениям, или другим папкам в его Меню "Пуск".

Рис. 16-23. Сообщение об ошибке, выведенное на экран на любой попытке открыть папку.

Ассоциации программы сохранены в улье HKEY_CLASSES_ROOT в реестре, таким образом, он предполагал, что что-то пропускало или повредило там. Он решил, что лучший план действий, чтобы идентифицировать проблему должен будет сравнить результаты Procmon на системе, показывающей проблему и подобный компьютер без проблемы.

Procmon может получить много данных в короткий срок, таким образом, он знал, что было важно сузить набор данных в максимально возможной степени. Он запустил Procmon с/noconnect опции, чтобы не начать получать события, пока он не был готов воспроизвести проблему. Он тогда нажал Ctrl + E, чтобы начать получение, по которому дважды щелкают на папку, и нажал Ctrl+E, чтобы остановить получение, как только сообщение об ошибке появилось. Затем, он перетащил значок креста нитей от панели инструментов Procmon по сообщению об ошибке, чтобы применить фильтр, ограничивающий дисплей только событиями от того процесса. Поскольку Explorer.exe также управляет всем рабочим столом — включая панель задач, область уведомлений, и более — он решил сузить дисплей только к потоку, который вывел на экран сообщение об ошибке. Он щелкнул правой кнопкой по заголовкам столбца, включил ID Потока (TID) столбец, и перетащил это рядом со столбцом PID. Предположение, что поток с большинством действия был тем, который он хотел, он использовал инструмент графа Оккерренсеса, чтобы идентифицировать поток (показанный в рисунке 16-24) и добавил это к фильтру. Затем он сохранил ту трассировку, выбирая опцию сохранения, которая включает только события, выведенные на экран с текущим фильтром.

Рис. 16-24. Идентификация потока с большинством действия.

Затем он воспроизвел шаги на компьютере, который не показывал проблему. Поскольку не было никакого сообщения об ошибке, он остановил получение, когда окно папки появилось, перетаскивая значок панели инструментов креста нитей, чтобы фильтровать на Explorer.exe процесс, которому принадлежали окно папки и сохранение результатов к файлу.

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

Рис. 16-25. Бок о бок сравнение трассировок Procmon.

Оповещение через результаты найти различия, он скоро видел работу RegOpenKey на HKCR\Folder\shell\open\command, который привел к ИМЕНИ, НЕ НАЙДЕННОМУ в "плохой" трассировке и УСПЕХЕ в "хорошей" трассировке. (См. рисунок 16-26.) Используя Regedit, он экспортировал тот ключ от хорошей машины и импортировал это в реестр на устройстве с неисправностями. Та простая фиксация, решенная проблема.

Рис. 16-26. Идентификация различий между трассировками Procmon.

Визуально сравнение трассировок рядом иногда необходимо, когда есть достаточно многие различия между ними, что инструмент как WinDiff не был бы полезен, но в этом случае WinDiff, возможно, ускорил исследование. В каждом экземпляре Procmon он сначала отключил бы дисплей столбца для Времени суток, PID, и TID, потому что они будут всегда отличаться между трассировками. После сохранения выведенных на экран событий (не профилируя события) к Разделенным от запятой Значениям (CSV) файлы, он, возможно, сравнил файлы с WinDiff и сразу обнулил в на недостающем регистрационном ключе. (См. рисунок 16-27.)

Рис. 16-27. Сравнение Procmon прослеживает с WinDiff.

 


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



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