近年来,关于 Windows 95 的历史细节不断被挖掘出来,包括微软如何在安装光盘中打包各种“有趣内容”、操作系统如何阻止外部安装程序降级关键系统组件、以及通过特殊机制实现更快重启等话题,如今又有一则与安装程序检测相关的旧事被曝光。
微软资深工程师 Raymond Chen 近期回顾称,虽然 Windows 95 已经具备阻止存在缺陷的外部安装程序降级系统组件的能力,但前提是系统要能判断“当前运行的程序到底是不是安装程序”,而这在当时其实是个棘手的问题。
为了解决这一难题,Windows 95 采用了一套非常基础的启发式检测机制,其核心理念是“根据名字来猜”。 具体做法是:如果当前正在执行的程序名中出现了“setup”“installer”“inst”等字样,系统就会推断它“很可能是一个安装程序”。 为适配不同语言环境,Windows 95 还加入了多种本地化变体,例如意大利语“imposta”、土耳其语“ayarla”、匈牙利语“felrak”等,只要文件名中带有这些词根,系统同样会将其视作安装相关程序。
如果程序名本身并未包含这些关键词,Windows 95 则会启用一个“兜底方案”:检查可执行文件所在路径中是否出现“setup”一词。 设计思路依然十分直接——真正的安装程序往往会被放在明显标注为“setup”的目录路径之下,因此通过路径命名仍有机会将其识别出来。 这种基于文件名和路径的“猜测式识别”,在现代看来颇为原始,但在当年的软硬件条件和软件分发方式下,却是一个简单有效的折中方案。

在识别出疑似安装程序之后,系统如何对关键文件进行保护,也有一套相应策略。Chen 指出,在上述两种识别场景中,Windows 95 并不会立刻对相关文件进行检查,而是选择将文件校验延后到下次系统启动时再执行。 原因在于,一些安装程序在发现目标文件“正在被占用、暂时无法替换”之后,会调用 ExitWindowsExec 将 Windows 退出回 MS-DOS,再通过批处理脚本在纯 DOS 环境中替换文件,最后重新启动 Windows,因此必须等到系统完成这一轮重启流程后,才能“抓住”这些可能被批处理脚本不当修改的文件。
不过,这种“延迟检查”并非适用于所有场景。对于通过 INF 文件安装的多媒体驱动等特定情形,Windows 95 会执行实时文件检查,而不是等到下次启动。 Chen 透露,负责这部分功能的团队似乎获得了某种“特殊通行证”,可以在安装流程中直接触发即时校验,而不必遵循通用的延迟检查机制。
从今天回望,这些机制显得既质朴又颇具工程师的“土办法”色彩。Windows 95 借助极其简单的规则和启发式“猜测”,就搭建出了对安装程序的基本识别与防护框架,反映出当年在资源有限环境下的设计取舍。 与之相比,如今的现代操作系统(例如 Windows 11)在安装程序识别和系统安全防护方面已经使用了远比当年复杂和精细得多的技术手段,这在过去数年持续演化并加剧的安全威胁环境下几乎已是必然选择。