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字元、不能有空格或多個小數點。
-
因為舊制度的缺點與風險已被充分理解並受控,改用新命名反而可能引發全新的相容性問題,而且不會讓系統更快或更安全,所以繼續保留更穩妥。

討論區