我有一个shell namespace extension,使用a file system folder as its junction point(通过在文件夹中创建一个带有我的扩展程序CLSID的desktop.ini文件)。
升级到新版本的扩展程序时,我希望避免重新启动所有已加载扩展程序的进程(这是How to unload C++ Shell Extension DLL properly中的建议答案),以提供更好的用户体验。
我试过了:
以上都没有成功强制资源管理器加载新版本的扩展程序。
我还尝试为新版本的扩展注册一个全新的CLSID,并删除旧版本的注册。此 主要 有效,除非打开指向该文件夹的任何以前存在的快捷方式。在这种情况下,既不加载旧的扩展名也不加载新的扩展名,并使用默认的shell文件夹来显示该文件夹。我再次尝试了SHChangeNotify,SHFlushSFCache和SHGetSetFolderCustomSettings,但没有一个用快捷方式解决了这个问题。
我在Windows 7和Windows 10 Fall Creators上测试了这个。