воскресенье, 19 января 2014 г.

Ручной перенос программы. Утилита procmon

  Переносил одну нашу внутреннюю программу на другой компьютер. На обоих компах стояла одинаковая Windows 7. Программа наша, внутреннего пользования, поэтому далее она будет называться просто "программа". Программист заверил меня, что достаточно просто скопировать папку в точно такое же место другого компа и все заработает.
  Она действительно заработала. Но спустя несколько дней пользователь позвал меня. И сказал что скопировалось не все. Программа выдавала огромную массу данных. И оказалось, что на старом компьютере по нажатию кнопки "Шаблон" выдавался список шаблонов, которые позволяли отфильтровать из этой массы то, что нужно. А на новом компьютере список шаблонов был пуст. Человеку приходилось самому просматривать всю эту массу данных.

  Первым делом я заново скопировал папку программы. Результат тот же. На всякий случай на обоих компах я сравнил свойства этой папки. Они совпадали в размере, количестве файлов и подпапок.
  Программиста в тот день не было. И в его отсутствие никто не мог подсобить.

Немного фэнтези

  В очередной раз тьма сгущалась над миром. Силы мрака уже праздновали свою победу, а луч света становился все тоньше и тоньше. Вселенная замерла в ужасе.
  Но тут в дело вступил великий воин Марк Руссинович с его набором утилит Sysinternals и тьма дрогнула. Когда на старый компьютер была скопирована его утилита Process Monitor, силы света воспрянули духом, а воинство тьмы сжалось в плохом ожидании. В дело вступали отборные солдаты добра.

Теория

  Марк Руссинович - сотрудник Microsoft и один из архитекторов ядра Windows. Написанный им утилиты Sysinternals используются службой поддержки Майкрософта для решения проблем пользователей. В этом блоге я уже пользовался ими когда программа не видит своей папки и утилитой Autoruns постоянно при ручном лечении вирусов. Правда она не помогла, когда я разбирался с АРМ Квартвідділ. Там причина оказалась в другом.
  Утилита Process Monitor отслеживает все записи в реестр и файловую систему компьютера. В ней имеется возможность исключить часть процессов из слежения и многие другие способы отфильтровать нужную инфу.
  Это был тот самый супер-мега- меч, который должен был изгнать силы тьмы. Экскалибур короля Артура тихо курит в углу.

Решение и победа

  На старом компьютере я запустил Process Monitor, отфильтровал в нем все процессы системы и временно отключил слежение. Потом запустил нашу программу и добрался до кнопки "Шаблон". В этот момент я включил слежение ProcessMonitor-a и сразу же в нашей программе нажал на "Шаблон". Через секунду, когда программа выдала шаблоны я остановил слежение "Process Monitor" и принялся изучать записанную ею деятельность.
  Оказалось, что за шаблонами наша программа полезла в "C:\Users\UserName\AppData\Local\r92715685" где UserName - логин пользователя системы. И в последней папке с непонятным именем "r92715685" и лежали шаблоны.
  Я скопировал эту папку на новый компьютер в то же место. И все заработало.