WinAPI和NTFS:读取更长的路径

时间:2018-04-18 16:50:51

标签: winapi ntfs

NTFS允许在完全限定的路径中使用最多32k个字符。出于兼容性原因,WinAPI仅允许完整路径最多248个字符减去文件名,总共255个字符。有没有办法使用DeviceIOControl()来绕过这个限制并读取任何可能更长的路径字符串?如果可以,那么有没有办法获得一个句柄来处理一个完整路径名超过255个字符的文件?

1 个答案:

答案 0 :(得分:5)

如果使用\\?\ path prefix,kernel32中大多数基于文件/路径的函数的宽版本都支持更长的路径,因为至少是Windows 2000。

如果您在MSDN上查看CreateFile,例如它说:

  

在此函数的ANSI版本中,名称仅限于MAX_PATH字符。要将此限制扩展为32,767个宽字符,请调用该函数的Unicode版本并添加" \\?\"走的路。

如果将longPathAware标记添加到清单或更改计算机组策略,Windows 10,版本1607(周年纪念更新)及更高版本允许您访问没有前缀的更长路径。

shell的部分CreateProcessLoadLibrary不支持> MAX_PATH无论你做什么。