18+

Windows 11為何不刪掉古早味MS-DOS檔名?微軟工程師揭密:會有災難

為何微軟不在最新作業系統Windows 11把MS-DOS舊檔名刪除,最主要就是為了相容性,改掉的話可能會讓軟體壞掉。示意圖/翻攝自Windows Blog網站
為何微軟不在最新作業系統Windows 11把MS-DOS舊檔名刪除,最主要就是為了相容性,改掉的話可能會讓軟體壞掉。示意圖/翻攝自Windows Blog網站

AI重點

文章重點整理:

  • 重點一:Windows 11 仍保留8.3檔名格式以維持相容性。
  • 重點二:微軟工程師指出改名可能導致大量舊軟體失效。
  • 重點三:System32中的舊檔名源自CP/M與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檔名繼續存在,原因並不是沒能力改,而是改動之後可能付出的相容性代價,而且就算真的改動這些檔名,也不會讓電腦跑得更快,或是提升安全性,與其「破壞」古早檔名,還不如繼續留住它們。

精華 FAQ

  • 因為許多Windows軟體早已把像user32.dll這類檔名寫死在程式裡,若突然改名,舊程式可能找不到檔案而失效,因此微軟優先選擇維持相容性。

  • 8.3檔名是MS-DOS時代的命名方式,檔名在小數點前最多8個字元,副檔名最多3個字元,且只能用ASCII字元、不能有空格或多個小數點。

  • 因為舊制度的缺點與風險已被充分理解並受控,改用新命名反而可能引發全新的相容性問題,而且不會讓系統更快或更安全,所以繼續保留更穩妥。

延伸閱讀

免存通訊錄!Whoscall推自訂來電名稱 「警衛室旁飲料店」都能標記

蘋果首款觸控MacBook最快11月6日開賣!OLED螢幕、動態島5亮點超期待

特斯拉飛天汽車Roadster懸空飛行很酷…但歸誰管?要考飛行員駕照嗎

iPhone Duo取貨等到明年!驚見原廠保護殼1缺點 網:多1個不買理由

本日熱門 本周最熱 本月最熱