Давно пользуюсь этой программой и хочу поделиться своими соображениями по поводу ее работы...
Как известно в винде используется технология Shared dll - однажды установленная dll-ка может использоваться большим кол-вом программ, установленных в последствии.
Для корректного удаления таких dll-файлов используется счетчик кол-ва программ, которые используют ту или иную dll, хранящийся в реестре.
Т.е. при установке проги, которая нуждается в установленной ранее dll-ки, в реестре увеличивается на 1 счетчик использования этой dll. При удалении этой программы он соот-но уменьшается. Таким образом можно определить, использует кто-либо конкретную shared-dll или ее можно безболезненно удалить.
Эта проблема является одной из составляющих термина "
Dll hell".
Существует другая проблема, связанная с удалением файлов: удаление программ, которые запущены в данный момент. Для этого программу надо остановить, но не каждую программу можно остановить не перегружая ОСь.
Теперь что мы имеем в результате?
Предположим какая-то программа использует shared-dll и не может быть выгружена из системы без перезагрузки. Я такие программы удаляю так:
1. Обычное удаление. При попытке удалить активные/запущенные/залоченные файлы шампунь ругается, что не может их удалить, но ссылки из реестра удаляет нормально.
2. Перегружаюсь. Запускаю шампунь еще раз и загружаю тот-же лог. Запускаю удаление вновь. Все удаляется без следов.
Такой метод всегда срабатыал нормально, но недавно, удаляя bluetooth стек от Widcomm я обнаружил, что перестал корректно работать TCP/IP стек. При этом в шампуне установлена опция Never Delete DLL files в Preferences->Delete->Shared Dll.
Теперь вопросы:
1. Как шампунь поступает со счетчиком использования Shared Dll? Насколько корректно он работает с этой "технологией"?
2. Как корректно удалять программы, которые висят в памяти и не выгружаются без перезагрузки (драйверы и пр.)?
3. Как могла произойти поломка TCP/IP стека в моем случае и как этого избежать в дальнейшем?