FindFirstFileEx 不区分大小写

the*_*nut 3 c# case-sensitive case-insensitive

由于我正在使用一个宏,如果给定路径的大小写与驱动器上的本地路径不相等,我首先需要验证该路径是否存在大小写。不幸的是(就我而言)Directory.Exists()不区分大小写。

所以我尝试了FindFirstFileExdwAdditionalAttributesset1代表FIND_FIRST_EX_CASE_SENSITIVE。然而,它似乎对我不起作用。我的本地路径是C:\Dir1\Dir2\Dir3. 我比较的路径是C:\dir1\Dir2\Dir3. 不幸的是,我总是得到Dir3结果。如果案例不匹配,我会期望一个空的结果。

我的错是什么?

string dir = @"C:\Dir1\Dir2\Dir3" + '\0';
int FIND_FIRST_EX_CASE_SENSITIVE = 1;
WIN32_FIND_DATA fi;

IntPtr h = FindFirstFileEx( dir,
                            FINDEX_INFO_LEVELS.FindExInfoStandard,
                            out fi,
                            FINDEX_SEARCH_OPS.FindExSearchNameMatch,
                            IntPtr.Zero,
                            FIND_FIRST_EX_CASE_SENSITIVE);
Run Code Online (Sandbox Code Playgroud)

Zde*_*vic 5

此功能取决于HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\obcaseinsensitive设置为 0的注册表项值,这不是默认值。

换句话说,它取决于底层文件系统设置,而不是 API 本身。

更多详情:http : //www.siao2.com/2010/12/08/10101148.aspx