Windows NTFS和大小写敏感性

12

维基百科中提到,NTFS允许两个名称相似但大小写不同的文件共存(例如Readme.txt和readme.txt),这只能通过Windows文件API进行防止。

当前的Windows文件系统(如NTFS)是区分大小写的;这意味着readme.txt和Readme.txt可以存在于同一个目录中。然而,Windows应用程序的文件访问API是不区分大小写的,这使得从应用程序的角度来看,文件名也是不区分大小写的。因此,应用程序只能访问那些文件名仅在大小写上有差异的其中一个文件,如果提供的文件名有歧义,则可能会失败一些命令。

作为一个Linux用户,我想知道这两个文件都存在的可能性,并且只能访问其中一个文件,这是否会带来安全问题。 "Windows API"是什么意思?是否有其他方法可以访问这些重复的文件?是否可以使用磁盘驱动器(格式驱动器)直接访问文件系统?

2个回答

15
NTFS是一个区分大小写的文件系统,对于文件名相同但大小写不同的文件视为不同的文件。
Windows API提供了NTFS的抽象层,使其看起来像是一个保留大小写的文件系统,它通过CreateFile API实现,该API几乎所有的文件创建和打开请求都会经过。
换句话说,文件的大小写敏感性是通过传递给CreateFile的FILE_FLAG_POSIX_SEMANTICS标志进行调节的。

5

正如Chris Becke所说:

NTFS是一个区分大小写的文件系统,对于文件名相同但大小写不同的文件进行区分处理。

幸运的是,如果你现在想要有大小写敏感的文件,在新的Windows 10开发者更新中允许你在某些文件夹中启用该功能,以供开发目的。但我提醒你不要依赖这个功能,因为旧版本的Windows不支持它,我不知道会发生什么。点击这里查看如何操作:https://www.howtogeek.com/354220/how-to-enable-case-sensitive-folders-on-windows-10/


你的意思是我必须遍历每个目录并运行这个命令吗?哇,这太讨厌了。默认的不区分大小写导致我的备份程序在遇到大小写不同但只有大小写不同时尝试复制到NTFS的情况下崩溃! - Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接