短文件名是使用您提到的算法從LFN自動強制構建的。 (在FAT32 specifications中也有詳細說明)。這是通過文件系統驅動程序完成的(至少在Windows和Linux上)。除非修改驅動程序,否則您確實無法更改該驅動程序。如果您只想爲一個目錄執行此操作,則可以通過修改十六進制編輯器中的磁盤映像來實現此目的,該編輯器不要使用相同名稱創建重複條目。
這裏是我試圖在Linux上:
#dd if=/dev/zero of=fatImage bs=1048576 count=256
#mkfs.vfat -F 32 fatImage
#mount -o loop fatImage /mnt
#cd /mnt
#mkdir ThisIsALongDirectoryName
脂肪驅動程序的目錄生成一個短名稱:THISIS〜1。 您可以使用兩個名稱來訪問它。
#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/THISIS~1
然後卸除分區後,我在十六進制編輯器(Okteta上KDE)打開圖像,關注SFN條目THISIS〜1, 並用MYNEWDIR取而代之。另外,每個32字節的LFN子條目存儲在偏移13處的SFN的校驗和。因此,我必須calculate並用THNIS_1(它是0xA6)所有的LFN子條目。保存修改後,我重新安裝了映像,並能夠使用舊的LFN和新的SFN訪問該目錄。
#cd /mnt/ThisIsALongDirectoryName
#cd /mnt/MYNEWDIR
你使用API來做到這一點嗎?如果是這樣,哪一個?如果沒有,那麼StackOverflow可能不是問這個問題的正確地方。 –
您可以使用fsutil setshortname在NTFS上執行此操作:http://technet.microsoft.com/en-us/library/bb490642.aspx – AlcubierreDrive