
据曾在微软负责 Windows 的工程师 Raymond Chen 回想,在 Windows 95 时代,很多第三方软件的安装法度榜样会自带一批体系可再发行组件,用来包管软件在用户电脑上能顺利运行。 微软当时给出的官方指引是:安装法度榜样在复制这些组件时,必须先检测体系中是否已存在同名组件,以及现有版本是否更新;只有在体系不存在该组件,或体系版本更旧的情况下,才能覆盖安装。
然而,实际中并非所有开辟者都遵守这一规范。 一些安装法度榜样疏忽版本检查,简单粗暴地用本身绑缚的文件调换体系组件,不管体系里的是新版本照样旧版本。 如许一来,本来已经更新到较新版本的 Windows 95 关键组件,反而被回滚成老版本,导致其他依附新版本组件的软件出现各类异常甚至崩溃,体系稳定性也随之大年夜打扣头。
假如发明某个组件被安装法度榜样调换成了更旧的版本,体系便会在用户毫无察觉的情况下,把它从新调换为 SYSBCKUP 中保存的较新副本,相当于主动“撤销”了此次缺点覆盖。 假如检测到安装法度榜样确切带来了更高版本的组件,Windows 95 则会同步更新 SYSBCKUP 中对应的备份文件,以便往后持续作为恢复基准。
面对这种“被倒退”的风险,微软最终设计出一个并不花哨却异常实用的折中筹划:在体系目次下保护一个名为 C:\Windows\SYSBCKUP 的隐蔽备份目次。 该目次中保存了那些最常被外部安装法度榜样覆盖的关键体系组件副本。 当安装法度榜样完成运行后,Windows 95 会在后台静静履行一次“版本比较”:将体系当前的“新”组件与 SYSBCKUP 目次中的备份版本一一比对。
Chen 表示,从工程角度看,这种做法其实比较“原始”,但已经远胜于微软最初测验测验的一些粗暴筹划。 比如,一开端微软测验测验过直接阻拦安装法度榜样覆盖体系组件文件,这确切能保护体系,但价值是大年夜量安装过程会是以掉败,用户只能面对缺点提示却无从下手解决。 另一个思路是让安装法度榜样写入“假文件”(dummy file),外面看上去覆盖成功,实则并未动到真实组件。 但这种筹划同样行不通,因为很多安装法度榜样还会对写入成果做校验,假如发明文件内容或校验值不符,又会弹掉足误中断流程。
在这些筹划都裸露出明显缺点后,应用 SYSBCKUP 目次做“过后纠错”的机制,成为当时在靠得住性和灵活性之间的最佳均衡点:既许可第三方安装法度榜样正常完成,又在后台主动修补其对体系关键组件造成的潜在破坏,大年夜幅降低了通俗用户在日常安装软件时“装着装着就把 Windows 弄坏了”的概率。

发表评论 取消回复