Как обновить расширение пространства имен оболочки без перезапуска проводника?

У меня есть расширение пространства имен оболочки, использующее папку файловой системы в качестве точки соединения (путем создания файла desktop.ini с CLSID моего расширения в папке).

При обновлении до новой версии расширения я бы хотел избежать перезапуска всех процессов с загруженным расширением (что является рекомендуемым ответом в разделе Как правильно выгружать C++ Shell Extension DLL), чтобы обеспечить лучший пользовательский опыт.

Я пробовал:

Ничто из вышеперечисленного не приводит к тому, что проводник загружает новую версию расширения.

Я также попытался зарегистрировать совершенно новый CLSID для новой версии расширения и удалить регистрацию для старой. В основном это работает, за исключением случаев открытия любых ранее существующих ярлыков, указывающих на папку. В этом случае ни старое, ни новое расширение не загружаются, и для отображения папки используется папка оболочки по умолчанию. Я снова попробовал SHChangeNotify, SHFlushSFCache и SHGetSetFolderCustomSettings, и ни один из них не устранил эту проблему с помощью ярлыков.

Я проверил это на Windows 7 и Windows 10 Fall Creators.

0 ответов

Другие вопросы по тегам