Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
712 22:23:01 Uesetup:FFFC5C7B Open C:WINDOWSWIN.INI SUCCESS OPENEXISTING READWRITE DENYWRITE
713 22:23:01 Uesetup:FFFC5C7B Ioctl C: SUCCESS Subfunction: 08h
714 22:23:01 Uesetup:FFFC5C7B Seek C:WINDOWSWIN.INI SUCCESS Beginning Offset: 0 / New offset: 0
Самыми интересными для нас являются строки, в которых упоминается операция Write, ведь мы хотим узнать, какие файлы появились и какие изменились в результате установки. Для удобства я пометил пример такой строки красным цветом. Теперь давайте посмотрим на отрывки из файла протокола работы с реестром.
Содержимое файла uedit_reg_inst.log:
16 40.46406720 Uesetup:FFFC5C7B OpenKey HKCUControl PanelDesktop SUCCESS hKey: 0xC2A14FD0
17 40.46411120 Uesetup:FFFC5C7B QueryValueEx HKCUControl PanelDesktopSmoothScroll NOTFOUND
18 40.46414480 Uesetup:FFFC5C7B CloseKey HKCUControl PanelDesktop SUCCESS
19 40.46420480 Uesetup:FFFC5C7B OpenKey HKCUControl PanelMouse NOTFOUND
…..
543 102.20113120 Uesetup:FFFC5C7B CreateKey HKLMSOFTWAREMicrosoftWindowsCurrentVersionSharedDLLs SUCCESS hKey: 0xC2A13880
544 102.20122880 Uesetup:FFFC5C7B SetValueEx HKLMSOFTWAREMicrosoftWindowsCurrentVersionSharedDLLsC:Program FilesUltraEditUninstall.exe SUCCESS 0x1
545 44.74403920 Uesetup:FFFC5C7B EnumValue HKLMSYSTEMCurrentControlSetControlNlsLocale SUCCESS 0000040D: ""
Как и в предыдущем примере, интересующие нас строки помечены красным. Надеюсь, вы уже догадались, что нас интересуют операции CreateKey и SetValueEx, отвечающие за создание новых ключей и установку их значений. Впрочем, просмотрев файл, я пришел к выводу, что операция SetValueEx, присваивающая ключу значение, всегда идет сразу же за CreateKey, поэтому можно облегчить нашу задачу, выбирая данные только по этому признаку. Поразмыслив еще немного, я пришел к выводу, что такое поведение довольно естественно, ведь программе инсталляции нет смысла создавать пустые ключи.
В связи с тем, что размер первого файла 1.2 Мб, а второго 283 Кб, думаю, все понимают, что обрабатывать вручную их не только затруднительно, но и весьма неприятно. Поэтому мы поступим в соответствии с фразой «Никогда не доверяй человеку работу, которую может выполнить скрипт». По моему мнению, UNIX является лучшей платформой для выполнения задачи фильтрации текстовых данных. Так происходит потому, что благодаря возможности связывать команды в цепочку с перенаправлением результатов работы одной команды на стандартный ввод другой мы можем без труда создавать довольно сложные фильтры.
Итак, давайте нарисуем план работы скрипта, фильтрующего данные о действиях с файлами. Сначала нужно выбрать все строки, в которых тип операции равен Write, затем отфильтровать только те, где статус выполняемой операции равен SUCCES. После этого вырезать пятое поле строки, содержащее имя изменяемого файла. В связи с тем, что во время первоначальной распаковки дистрибутива происходит очень много операций записи в папку TEMP, нам нужно отбросить все строки, содержащие такие фрагменты. Делаем мы так потому, что после инсталляции программа стирает все временные файлы из папки TEMP, соответственно нам там тоже нечего делать. Полученный список файлов подвергается сортировке с исключением повторяющихся строк и сохраняется в файл uedit_file_inst_selected.log. Все вышеописанные действия выполняются следующей командой:
$ cat uedit_file_inst.log | grep Write | grep SUCCESS | cut -f5> | grep -v "TEMP" | sort -u > uedit_file_inst_selected.log
В результате получаем файл размером в 1.4 Кб с вот таким содержимым:
C:1G27M3QF.BAT
C:PROGRAM FILESULTRAEDITAUTOCORR.TLX
C:PROGRAM FILESULTRAEDITCHANGES.TXT
C:PROGRAM FILESULTRAEDITCONDCORR.TLX
C:PROGRAM FILESULTRAEDITHTMLTIDY.DLL
C:PROGRAM FILESULTRAEDITHTML.TLX