Windows NTFS and case sensitivity

filesystemsntfswindows

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)?

Best Answer

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.