Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Пользователь


Сообщения: 108
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


И снова о "занятых" DLL...
Читать дальше...

В составе программы FolderSizes (foldersizes.com) есть файл FSShellExt.dll, с помощью которого в контекстное меню папок добавляются собственные команды программы.



Мне нужно пропатчить эту dll-ку или, в крайнем случае, заменить своей и, конечно же, без перезагрузки. Проблема в том, что dll-ка "занята" и не поддается изменению/удалению. Скопировать её можно.

Не очень понимая, что получаю, заметил такую закономерность.

Пока контекстное меню папки (любой) не вызывалось, файл остается "свободным", хоть до выключения компьютера.



Как только контекстное меню вызвано, файл "захватывает" Explorer.exe.



Просто так его уже не удалить.



Но файл FSShellExt.dll можно ЗАМЕНИТЬ вручную (из учетки администратора, Win 8.1), например, его же копией. Проводник сопротивляется, но все же дает выполнить эту операцию.



О чудо! Файл теперь можно патчить, удалять, перемещать, переименовывать и т.д. И опять же, до вызова контекстного меню папки.

Так как бы узнать, какая команда была выполнена, что Проводник разблокировал файл и можно ли это как-то использовать в сценарии NSIS? Насколько я понимаю, регистрация FSShellExt.dll не отменяется и сохраняется даже после его удаления. Контекстное меню начинает работать сразу же после копирования файла FSShellExt.dll на то же место (в папку программы) и вызова контекстного меню папки.

Предыдущие сообщения читал. Может появилось какое-то "бесперезагрузочное" решение.

Отправлено: 20:12, 27-11-2014 | #1381