朱玛 发表于 2021-2-10 01:42:26

建议增强设置卷标功能

经测试发现目前DiskGenius的设置卷标功能似乎直接调用的SetVolumeLabel这个函数来修改的卷标,不过这样做自然会受到系统API的许多限制。
就像FAT32文件系统的32G容量格式化限制一样,Windows对FAT系列文件系统的卷标可用字符也施加了很多人为限制。
比如对于FAT12/16/32来说无法直接将卷标设置为"小写"的英文字母以及使用这些字符: \ / : * ? " < > |

然而实际上FAT12/16/32的卷标采用了ASCII编码来表示,在使用DiskGenius格式化卷时或直接修改对应扇区数据都完全可以突破设置卷标API的字符限制且没有问题。



而对于exFAT文件系统其卷标在字符长度上曾有一个微妙的限制:
首先exFAT的卷标采用了Unicode字符集来表示,实际卷标长度最大则能够达到15个字符而非FAT12/16/32的11个字符。
且在Windows 7及更低版本的系统中格式化为exFAT的卷标长度最大就可以达到15个字符,不过由于Win7时代微软尚未引入exFAT引导功能,因此Win7的设置卷标API在修改exFAT卷标时最大是可以支持到15个字符的。

但是在Windows 8及更高版本的系统中格式化为exFAT的卷标长度最大却只能达到11个字符,这自从Win8的早期测试版本开始引入了可启动exFAT卷特性后,微软就对Win8的设置卷标API在修改exFAT卷标时施加了最大只能支持到11个字符的限制。

如果我没猜错的话,微软此举应该是为了兼容启动DOS这种只支持8.3短文件名的远古操作系统,然而考虑到当今已经没人还会专门去用古老的DOS系统了,那么显然就有必要放开这个限制。
同时这也产生了在对同一个exFAT分区设置同样15字的卷标时,在Win7系统下能够直接设置成功,但在Win8系统下就会报错设置失败的奇特现象。



为此我对该功能的建议是:调整为采用程序内置算法识别文件系统类型智能匹配操作方案并直接写扇区修改卷标

DGen 发表于 2021-4-10 21:26:43

感谢建议
页: [1]
查看完整版本: 建议增强设置卷标功能