Windows 11為何不刪掉古早味MS-DOS檔名?微軟工程師揭密:會有災難
Windows 11 26H2已是微軟(Microsoft)最新的桌面作業系統,不過裡頭的系統檔案,如kernel32.dll、user32.dll與ntoskrnl.exe,檔名看起來仍像是MS-DOS時代留下來的產物,為何官方不在新系統裡徹底改頭換面呢?原來是因為這些檔名遵循一套名為「8.3」的古老命名規則,而Windows至今仍保留它,最主要就是為了相容性,改掉的話可能會讓軟體壞掉。
據Windows Latest報導,在Windows工作超過30年的Microsoft資深工程師Raymond Chen過去曾解釋,與其改用一套可能帶來全新相容性問題的命名方式,微軟更傾向保留一套「缺點早已被理解,而且問題已經受到控制」的舊制度。不過進入Windows 11檔案總管的System32資料夾,裡面仍充滿看起來像1990年代磁片時代會出現的檔名。
什麼是8.3檔名?為何MS-DOS會使用?
應該仍有不少人好奇,什麼是8.3檔名,其實是MS-DOS使用的檔案命名規則,檔名在小數點前最多只能有8個字元,小數點後的副檔名最多3個字元,因此完整檔名最長為12個字元,包括中間的小數點。
根據Microsoft的檔案系統規範,8.3檔名只能使用ASCII字元,不能包含空格,也不能出現超過一個小數點。因此System32中許多年代最久遠的檔案都遵循這種規則,而較新的Windows元件則早已不受這種限制,且MS-DOS當年還會用大寫方式顯示檔名,如KERNEL32.DLL。但Windows預設不區分檔名英文字母大小寫,因此kernel32.dll與KERNEL32.DLL基本上會被視為同一個檔案。
至於為什麼是8個字元加3個副檔名字元,Raymond Chen提到「是從CP/M留下來的」,而CP/M是Gary Kildall在1974年為早期微型電腦打造的作業系統,MS-DOS為了維持與CP/M的相容性,連檔案命名方式也一併承襲。但他也無法真正了解8+3的原因,只能猜測「8」可能只是當年方便採用的數字。
Windows為什麼不把老系統檔改名?
Raymond Chen提出數個觀點分析,最直接的原因,可能是DLL檔名一旦被軟體連結使用,之後就很難再更改,像是如果微軟突然隔天把user32.dll改成另一個名稱,那麼數十年來大量Windows軟體還是會繼續尋找user32.dll,最後只會發現這個檔案不存在,進而讓相容性出現問題。
此外,Windows過去也會替長檔名產生短檔名別名,例如Program Files可能對應成PROGRA~1,而部分舊程式甚至把這些短名稱直接寫死在程式裡,因此貿然取消也可能引發問題。
因此Microsoft之所以讓8.3檔名繼續存在,原因並不是沒能力改,而是改動之後可能付出的相容性代價,而且就算真的改動這些檔名,也不會讓電腦跑得更快,或是提升安全性,與其「破壞」古早檔名,還不如繼續留住它們。
訂閱《科技玩家》YouTube頻道!
💡 追新聞》》在Google News按下追蹤,科技玩家好文不漏接!
📢 OpenAI可愛AI助理dots來了!全天替你工作、和ChatGPT差異一次看
📢 LINE最無用功能掰了!LINE VOOM正式停止服務 申請備份剩今天
📢 教學/蘋果備忘錄APP新功能!長篇筆記快速建立目錄 跨檔案也能用
📢LINE免費貼圖!「醜嫩狗勾」終身免費、這2款約朋友見面超實用
📢 有iPad mini 8、iPad 12!蘋果程式碼外洩「規格更好」10月登場
📢 手機、平板做這些事讓鋰電池短命!11個毀掉電池壽命壞習慣要避免