设为首页 收藏本站
查看: 544|回复: 0

[经验分享] 解密Windows,DLL重定向

[复制链接]

尚未签到

发表于 2018-6-14 08:44:08 | 显示全部楼层 |阅读模式
DLL 梦魇。  问题竟严重到如此境地,甚至于自身都背有这么恶劣的绰号。当您安装某个程序时,另一个看似与之无关的程序忽然停止工作。原因出乎您的意料,这两个程序通过一个共享的 DLL 文件产生了某种联系。它们对于系统目录中应该存在哪种 MSVCRT.DLL 文件版本产生了分歧。或者,一个程序可能会升级另一个程序正在使用的 ActiveX® 控件,而后者对于升级后的控件并不完全兼容。
如果这两个程序在您的公司的日常运作中都是必不可少的,则追究哪个才是罪魁祸首就显得无关紧要。当务之急是要让它们启动并运行。比方说,“我们不断赔钱”和“都怪 Bob,他使我们不断赔钱”,这两种情况并无二样,因为不管是哪一种情况,您的公司都在不断赔钱,立即解决问题对我们而言都责无旁贷。
这个比方常常用来形容非要对程序进行取舍的情况。从 Windows® 2000 开始,系统提供了一些修复工具,可以帮助您处理这些冲突。但是,这些修复工具只是临时性的解决方案,当您研究更为永久的冲突解决方案时,这些工具可以让您的系统恢复到正常状态。
Windows 2000 只附带了一种简单的修复工具,现在拥有一个富有创意的名字,即“动态链接库重定向”。要启用 DLL 重定向,请先创建一个与计划进行 DLL 重定向的程序同名的文件,但需在名称后面加上 .local。例如,要对 C:\Program Files\Litware Inc\Invoice.exe 应用重定向,请创建文件 C:\Program Files\Litware Inc\Invoice .exe.local。文件的内容无关紧要,只要该文件存在即可。
一旦为某个程序启用了重定向,则该程序针对加载 DLL 所执行的所有操作,在查找常规位置之前,将首先查找包含该程序的目录。因此,在 MSVCRT.DLL 文件发生冲突的情况下,您可以在每个程序中启用重定向,然后将 MSVCRT.DLL 的私有副本分别放在它们的安装目录下。每个程序就会获得符合自己版本要求的 MSVCRT.DLL,即程序测试所使用的 DLL 版本。
该技术的魅力在于,即使程序加载 DLL 时使用的是完整路径,该方法也同样有效。例如,假设程序试图加载 C:\Program Files\Common Files\Proseware Inc\taxplugin.dll。在升级到 Proseware 2.0 后,您发现其税款插件与您的发票程序不兼容。您能做的就是将旧版税款插件复制到 C:\Program Files\Litware Inc\taxplugin.dll。即使该程序在加载税款插件时使用的是完整路径,DLL 重定向仍然会在当前目录中查找并使用本地替代的 DLL,而不是 Proseware Inc 目录中的 DLL。
在 Windows XP 和 Windows Vista™ 中,DLL 重定向的规则略有不同,但基本原理是相同的。除创建 .local 文件外,还可以创建 .local 目录。在这种情况下,程序搜索的是 .local 目录,而不是其安装目录。该方法可以在同一目录中对多个程序应用重定向,而不会产生任何冲突。
请注意,无法对包含应用程序清单的程序应用重定向,并且一些所谓的已知 DLL 也不应作为重定向的对象。(有关详细信息,请参阅“Dynamic-Link Library Redirection”(英文)。)
DLL 重定向不可能帮您完全摆脱 DLL 梦魇,但是当您解决这些问题时,它至少会为您提供一些应急的处理方法。
http://www.microsoft.com/technet/technetmag/issues/2007/01/WindowsConfidential/zh//fig01.gif

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-523519-1-1.html 上篇帖子: Windows 2003 自动注销[转] 下篇帖子: windows 下安装postgre数据库
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表