Решено было сделать скрипт который бы просто шерстил определенным образом заданные ветки реестра и удалял оттуда информацию.
И тут я столкнулся с одной занятной ситуацией.
Как всем известно информация об инсталляции хранится в ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall .
Однако на этапе удаления Photoshop CS3 в appwiz.cpl он тем не менее оставался. Почему? Поиски ответа на этот вопрос по реестру привели нас к этой ветке - HKEY_CLASSES_ROOT\Installer\Products .
В соседней ветке HKEY_CLASSES_ROOT\Installer\Features и HKEY_CLASSES_ROOT\Installer\Components также находится информация об установке, но уже менее интересная для нас.
Все работало просто отлично пока не появилась задача на некоторых компьютерах где софт был удален таким варварским способом его восстановить. Некоторые из программ, в частности тот же самый Photoshop CS3, начали утверждать что они уже установлены и было бы неплохо им сделать repair или удалить. Конечно же и тот и другой процесс завершались либо с ошибкой либо со статусом 0 и таким же количеством реально выполненных работ.
Поиски ответа на вопрос как такое может быть привели нас к ветке реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\
Структура разделов там такая же как в HKEY_CLASSES_ROOT\Installer\
Также инсталляция может быть выполнена исключительно из под пользователя, тогда вместо S-1-5-18 надо покопаться в разделе с sid'ом пользователя. Для конвертации sid'а в нормальное имя пользователя можно воспользоваться специальной программой от Sysinternals/Microsoft
Итак для полного удаления всех следов выполненной инсталляции надо удалить соответствующие разделы в ветках реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
HKEY_CLASSES_ROOT\Installer\Features
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\
have fun!
Комментариев нет:
Отправить комментарий