我有用C++ 和 COM 编写的shell 扩展 dll该 dll 已注册并加载到内存中。我的升级设置程序将执行以下操作:
- 注销shell扩展dll,杀死explorer.exe
- 复制更高版本的shell扩展dll(步骤2)
- 启动 explorer.exe
它工作正常。但问题是:
如果用户打开了任何其他应用程序(Internet Explorer,有时是 Windows 任务管理器,记事本等),则步骤 2将失败。
升级 dll 时有什么方法可以关闭所有 shell 扩展 dll 挂钩。
在 dll 中,我使用 GetOverlayInfo、上下文菜单、数据库连接等