周报_2012第17周(2012/04/222012/04/28)

2012.04.28

复杂问题研究:升级shell扩展com库

explorer根据guid区分不同的com库

explorer不重新启动则始终在其内存中驻留旧的com库程序

rgs注册表项为com库的调用方入口

explorer使用相同的旧的guid(新升级版本的rgs注册表项)调用其内存中驻留的旧com库,崩溃的是旧dll库,与新dll库无关,所以新增调用接口无法兼容预防旧程序崩溃。

explorer使用新guid与其内存中驻留的旧com库不匹配,不能调用程序,所以右键菜单扩展显示为空。

所以新增调用入口时防止旧com库崩溃的方法是[升级guid],结果为不显示右键菜单的shell扩展,explorer重新启动后将提升dll版本号(即加载新的guid库)加载新的com库程序。(应尽可能的在最初设计时完善调用入口 - 注册表项 ShellEx\ContextMenuHandlers)

覆盖原dll文件位置安装时(删除原dll并在相同位置粘贴新dll),explorer同时保存2个版本dll(包含已删除的原有dll),explorer使用新升级guid和新dll库匹配,但是explorer使用未提升的旧的dll版本号,不能加载。

删除原dll文件在新位置安装时,explorer使用新升级guid和新dll库匹配,并提升新dll版本号,正确加载shell扩展库。

-----------------------------------------------------------------------

个体与交互 胜过 过程与工具

可以工作的软件 胜过 面面俱到的文档

客户协作 胜过 合同谈判

响应变化 胜过 遵循计划

-----------------------------------------------------------------------

软件产品研发部 李树鹏

大连启明海通信息技术有限公司

地址:大连市高新技术产业园区信达街57号

手机:13942696565

=========================
 

原文地址:https://www.cnblogs.com/DancingFish/p/2475806.html