微软资深员工雷蒙德·陈(Raymond Chen)最近分享了Windows发展史上的一个有趣故事——Windows 95如何处理安装程序破坏系统文件的问题。
这个问题可以追溯到16位Windows时代,当时许多系统组件都是可重新分发的。安装程序可以包含这些组件的副本并将其放置在目标计算机上。安装程序应该比较系统上现有文件和要复制文件的版本号,只有在要安装的文件版本号更高时才进行覆盖。
与现在创建安装包时需要担心注册表被完全破坏或依赖项不是开发者认为的那样相比,那时的情况要简单得多。
"这个规则依赖于Windows保持向后兼容性的特点,因此即使旧程序使用新版本文件也能正常工作,"陈写道。
在实际应用中,没有任何机制阻止安装程序完全忽略这个规则。安装程序简单地覆盖路径上的任何文件,用Windows 3.1的组件替换Windows 95组件的情况并不罕见。
"你可以想象这给系统其余部分造成了多大的灾难,"陈说。
虽然距离Windows 95时代已经过去了几十年,读者可能会好奇为什么操作系统要允许这种情况发生。答案是向后兼容性:阻止文件操作可能会破坏安装程序本身。
"这最终造成了更多问题,"陈解释道。"一些安装程序会声明安装失败并放弃。其他程序会向用户显示错误消息,询问用户下一步该怎么做。(好像用户知道该怎么做似的。)"
"你甚至会遇到采取更极端措施的安装程序,它们会说:'好吧,我不能覆盖这个文件,那我就重启系统,然后通过批处理文件覆盖文件,看你能不能阻止我。'"
微软的解决方案是创建一个隐藏目录(c:\windows\sysbckup)来存放经常被覆盖的文件。安装完成后,Windows会悄悄检查磁盘上文件的版本号。较高版本号的文件会被复制到隐藏目录中,或者隐藏目录中的文件会替换版本号较低的文件。
"基本上,"陈写道,"Windows 95会等待每个安装程序完成,然后回头检查其工作,修复安装程序犯的任何错误。"
这种双重保险的方法依赖于操作系统能够感知到安装程序正在翻查其内部文件。
如今——基于最近的表现——用户应该更少担心安装程序,而更多地关注微软自己对Windows系统文件做了什么。
Q&A
Q1:Windows 95时代的安装程序有什么问题?
A:当时的安装程序经常忽略版本检查规则,直接覆盖系统文件,用Windows 3.1的旧组件替换Windows 95的新组件,给系统造成严重问题。
Q2:微软如何解决安装程序破坏系统文件的问题?
A:微软创建了一个隐藏目录(c:\windows\sysbckup)存放重要文件的备份。安装程序完成后,Windows会自动检查文件版本号并修复被错误覆盖的文件。
Q3:为什么Windows 95不直接阻止安装程序覆盖系统文件?
A:为了保持向后兼容性。直接阻止文件操作可能导致安装程序失败、显示错误或采取更极端的措施,反而会造成更多问题。
好文章,需要你的鼓励
OpenAI推出企业级智能体平台ChatGPT Work,可跨应用自动执行多步骤工作任务,生成文档、演示文稿及电子表格等业务内容。同步推出的GPT-5.6系列模型涵盖Sol、Terra、Luna三档,主打"更低成本、更强性能"。Sol在编码、网络安全及复杂推理基准测试中表现突出,定价为每百万输入tokens 5美元。新模型还支持Microsoft 365、Google Drive等企业应用集成,并引入max与ultra两种推理模式以应对复杂工作负载。
斯坦福与UC伯克利提出LLM-as-a-Verifier框架,通过提取AI模型内部概率分布生成连续评分,在代码、机器人、医疗领域均达到最优性能,且无需额外训练。
大疆发布AP100降落伞,专为旗舰级Matrice 400企业无人机设计。该配件重约935克,支持自动与手动两种部署方式,可在600毫秒内触发展开,将无人机下降速度控制在每秒5米以内。AP100作为独立安全模块运行,配备独立飞控、传感器及备用电容,断电后仍可持续工作一小时。此外,内置飞行终止系统可在展开前切断电机,防止螺旋桨缠绕。该配件还支持欧盟EASA和英国CAA的C5/C6等级合规认证,适用于超视距飞行任务,防护等级IP55,适应-20°C至50°C宽温环境。
字节跳动Seed团队发现AI智能体在真实环境中学习的进步曲线精确遵循对数S形规律,R?达0.998,且前沿模型的学习速度每三个月翻倍。