8.3 短名稱的小研究





琥珀
2007-08-01, 06:19 PM
NTFS 檔案系統,登錄的優化上,最常見到的就是「停止建立 8.3 短名稱」、「停止最近存取時間記錄」這兩個了。這次來試試停止 8.3 短名稱的建立。

只花了兩個小時研究,大致是有個結論了。如果分為啟動、禁用,以及圖形介面、文字操作,總共就要測試這四種情況。

先來說說「檔名」好了。如果沒特別用途,在圖形介面下,以及用 dir 指令所看到的檔案名稱,都是指長檔名。這裡的長檔名,當然不一定都是指超過 8.3 格式的,只是相對於短檔名的說法。如果某個檔名沒有超過 8.3 格式的規定,則短名稱是空白,直接用標準名稱,也就是長名稱。

在文字命令模式下,作業系統會參考短名稱和長名稱。也就是說,如果已經存在某個檔案的短名稱,在同一目錄下,該名稱就不能使用第二次,並不會將長名稱和短名稱分開處理。短名稱和長名稱沒有絕對關係,只是短名稱是為了某些程式的相容性。

廣義地說,目錄也是檔案的表現方式,因此在同一路徑之下不會同時存在相同名稱的檔案和目錄。就算停止作業系統自動產生短名稱,但是短名稱還是可以用公用程式指定,所以一個名稱為「Documents」的目錄,短名稱可以是「123」、「ABC」都無所謂,只要不違反上述的條件。

並不是說一定要取長名稱的前面六個字元,然後加上「~1」、「~2」當作短名稱,只是因為習慣而已。在命令提示下,務必要知道長名稱和短名稱是一體兩面,只要名稱符合,合乎邏輯,所做的操作都是有效的 (當然,操作結果可能會失敗,但功能還是具備),因此若有人存心想利用這項特性侵害他人的系統,修改某些重要檔案名稱或內容,還是會有一定的危險。

fsutil 這個檔案系統公用程式,或許大家都知道,可以用這個程式建立檔案、設定關鍵數值、查看硬碟資訊…等。不過還是要小心使用,不熟悉的設定請不要亂改。


啟用 8.3 的情況:

建立一個 "set set set" 目錄。圖形操作或文字指令都可以。
用文字指令,建立 setset~1,顯示檔案或目錄已經存在。
用圖形操作,成功。原本目錄的短名稱,系統自動調整為 "SETSET~2"。
如果是檔案,不是目錄,結果一樣。

禁用 8.3 的情況:

建立一個 "set set set" 目錄。圖形操作或文字指令都可以。
用 fsutil 程式手動指定短名稱。暫時設定為 "setset~1"。
用文字指令,建立 setset~1,顯示檔案或目錄已經存在。
用圖形操作,成功。原本目錄的短名稱,系統自動清除。
如果是檔案,不是目錄,結果一樣。

其它資訊:

不論圖形或文字操作,也不論原先是否有短名稱的存在,只要移動或複製檔案 (目錄也算檔案),在目標處,就依照啟用/禁用的設定分別對應操作。

特別目錄的短名稱,例如 "DOCUME~1" 和 "PROGRA~1" 名稱,不管事後是否有禁用短名稱,在圖形介面下也無法建立這樣的目錄。如果可以成功,原本系統內建的名稱一定會改變,恐怕就會成為 "DOCUME~2"、"PROGRA~2" 了。當然,用 fsutil 自然也不能更改這些目錄的短名稱。

在文字命令下,用 Tab 完成檔案、目錄時,輸入短名稱的一部分,系統會自動尋找,找到後會以長名稱來顯示。如果有一個 "set set set" 目錄,短名稱為 abc,當使用者輸入 abc 之後,系統會自動調出 "set set set" 目錄來對應。總是以長名稱 (標準名稱) 為主,短名稱為輔。

進入目錄,除非使用者堅持指定短名稱,才會顯示短名稱路徑。