假设Windows本地和networking文件path不区分大小写是否安全?
是。 Windows(本地)文件系统(包括NTFS)以及FAT和变体不区分大小写(通常情况下)。 网络文件系统的底层实现可能区分大小写,然而,大多数允许Windows访问的软件(例如SMB )会自动使区分大小写的文件系统对Windows不区分大小写。
有关详细信息,我会阅读维基百科有关文件名的文章 。
Windows上的区分大小写实际上是在应用程序打开文件的过程中实现的。 NTFS可以是区分大小写的文件系统,并且可以愉快地存储文件,相同的名称只有在同一个目录中才有区别。
在Windows上,所有文件最终都通过CreateFile API打开 – 如果FILE_FLAG_POSIX_SEMANTICS
标志被传递给调用(并且被访问的文件系统本身区分大小写),那么文件将根据确切的名称匹配打开。 如果FILE_FLAG_POSIX_SEMANTICS
未被传递,则文件系统会打开一个不区分大小写的文件,并打开其中一个具有匹配名称的文件。 如果存在多个,则不确定哪个实际打开。
Windows上的大多数C和C ++运行时实现不提供对此机制的访问权限,也不会使用此标志,因此访问区分大小写的行为的唯一方法是直接使用Windows API。