
Windows 95 針對安裝程式以舊版本覆蓋檔案的防禦機制
Windows 95 引入了一個隱藏的備份系統,用於自動修復那些不聽話的安裝程式,防止它們錯誤地用舊版本覆蓋關鍵的系統檔案。
背景
這篇文章源自微軟資深工程師 Raymond Chen 的部落格,探討 Windows 95 時代為了應對不守規矩的軟體安裝程式所採取的防禦機制。當時許多安裝程式會無視版本號,直接將系統關鍵組件替換為舊版本,導致系統崩潰;為此 Windows 95 建立了一套自動備份與還原機制,在安裝結束後默默修正這些錯誤。
社群觀點
針對 Windows 95 這種「先讓安裝程式搞破壞,再回頭收拾殘局」的做法,Hacker News 社群展開了熱烈討論。部分網友對這種設計感到震驚,認為在安裝程序結束後才去檢查並覆蓋檔案的行為簡直是「喪心病狂」。他們指出,這種機制可能存在安全隱患,例如惡意軟體只要將版本號設為無限大,就能永久劫持系統組件,讓 Windows 誤以為該惡意檔案才是最新的版本並將其存入備份目錄。
然而,另一派意見則對微軟為了維持向下相容性所付出的努力表示敬意。有留言者將此與現代 Linux 的容器技術進行對比,認為雖然兩者解決問題的邏輯不同,但微軟在當時受限的技術環境下,必須處理極其混亂的軟體生態。雖然有人質疑這種機制是否會導致安裝程式在最後階段卡住,但社群普遍認為,由於還原動作是在安裝完成後才觸發,理論上不應影響安裝程式本身的運行進度,除非系統誤判了安裝程序結束的時間點。
討論中也觸及了技術實現的細節,例如 Windows 如何判定一個程序是否為「安裝程式」。根據社群成員提供的資訊,系統主要是監控對特定資料夾(如 Program Files 或 Windows 目錄)的寫入行為。雖然這種做法在現代開發者眼中顯得粗糙且危險,但在當時為了確保使用者在升級 Windows 95 後,舊有的 16 位元軟體仍能正常運作且不破壞系統穩定,這似乎是微軟在多次嘗試失敗後(如直接攔截寫入或重定向到虛擬檔案)所能找到的最優解。這種對相容性的極致追求,正是早期 Windows 開發歷史中既瘋狂又令人敬佩的一面。
延伸閱讀
在討論串中,有網友分享了 Raymond Chen 另一篇關於 Windows 如何偵測安裝程式運行的技術細節文章(devblogs.microsoft.com/oldnewthing/20260324-00/?p=11...),進一步補充了系統判定安裝行為的邏輯。