今天来分享一个非常有趣的Windows冷知识。
在Windows 95时代,微软如何判断一个程序是否为安装程序?答案简单到令人意外——靠猜测,而且仅仅是根据文件名来决定。
具体来说,系统会扫描可执行文件的名称,看它是否包含以下六个关键词中的任意一个:setup、install、inst,以及三个非英语词汇imposta、ayarla、felrak——它们分别对应意大利语、土耳其语和匈牙利语中“安装”相关的词汇。
有意思的是,在这个列表里,install其实是冗余的。因为任何包含install的文件名,自然也会包含inst。后来有推测认为,inst是后来才添加的,目的是为了匹配像blahinst这种命名方式的安装程序,但当时没有人顺手把多余的install删掉。

如果文件名一个都没对上,Windows 95还有备用方案:它会退而求其次,检查可执行文件的完整路径里是否包含“Setup”这个词。
这套字符串匹配机制的背后,其实是一个系统文件恢复流程在支撑。当时的问题在于,很多安装程序根本不管版本号,上来就覆盖系统文件,完全无视微软那条“只能用更新版本替换旧版本”的严格规则。
举个例子:一个捆绑了Windows 3.1版本共享DLL的安装程序,完全可能把Windows 95的新版文件直接覆盖掉。结果就是,依赖这些文件的程序一夜之间全部崩溃。
Windows 95的应对方案是,在隐藏目录C:\Windows\SYSBCKUP里备份那些经常被覆盖的系统文件。等安装程序跑完,系统再回头检查一遍,把被降级的文件恢复回正确的版本。但这套安全网能正常工作,前提是——系统得猜对“安装程序是否运行过”。
到了Windows 2000,微软放弃了这种靠猜测的机制,引入了Windows文件保护(WFP)。它通过Winlogon注册文件变更通知,从%WinDir%\System32\dllcache缓存中恢复受保护文件。不再依赖文件名猜测,也不必等到安装程序结束才采取行动。
Windows ME也推出了类似的系统文件保护机制。Vista之后,这个体系又升级为Windows资源保护(WRP),改用访问控制列表(ACL)来保护文件。
如今,Windows 11用户仍在运行的sfc /scannow命令,正是这一体系的直系后代。它取代了1995年那个靠扫描文件名里有没有“setup”来决定是否行动的原始机制。

