且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Windows NTFS和区分大小写

更新时间:2022-12-18 13:13:33

NTFS是一个区分大小写的文件系统,文件名称相同,但大小写不同的文件不同。



Windows API提供了一个NTFS的抽象,使得它显示为保存文件系统的一种情况,通过 CreateFile API几乎所有文件创建和打开请求都通过。

即,文件打开或创建的区分大小写是由 FILE_FLAG_POSIX_SEMANTICS 标志传递给CreateFile。

According to Wikipedia NTFS allows two similar names with different case (like Readme.txt vs. readme.txt) and it is only prevented by the windows file API.

Current Windows file systems, like NTFS, are case-sensitive; that is a readme.txt and a Readme.txt can exist in the same directory. However, the API for file access in Windows applications is case-insensitive, which makes filenames case-insensitive from the application's point of view. Therefore, applications only have access to one of the files whose filenames only differ in case, and some commands may fail if the filename provided is ambiguous

Comming from Linux I ask myself what are the possibilities that both files exist and one can only access one of the files making it an ideal problem for security. What is meant by "Windows API". Is there another way to access those duplicated files? Can one access the file system directly using the disk driver (format driver)?

NTFS is a case sensitive file system and treats files with the same name, but different case, as different files.

The Windows API presents an abstraction of NTFS that makes it appear as a case preserving file system, and it does this via the CreateFile API that almost all file creation and opening requests are routed through.

Namely, the case sensitivity of file opening or creation is mediated by the FILE_FLAG_POSIX_SEMANTICS flag passed to CreateFile.