NTFS允许在完全限定的路径中使用最多32k个字符。出于兼容性原因,WinAPI仅允许完整路径最多248个字符减去文件名,总共255个字符。有没有办法使用DeviceIOControl()
来绕过这个限制并读取任何可能更长的路径字符串?如果可以,那么有没有办法获得一个句柄来处理一个完整路径名超过255个字符的文件?
答案 0 :(得分:5)
如果使用\\?\
path prefix,kernel32中大多数基于文件/路径的函数的宽版本都支持更长的路径,因为至少是Windows 2000。
如果您在MSDN上查看CreateFile
,例如它说:
在此函数的ANSI版本中,名称仅限于MAX_PATH字符。要将此限制扩展为32,767个宽字符,请调用该函数的Unicode版本并添加" \\?\"走的路。
如果将longPathAware标记添加到清单或更改计算机组策略,Windows 10,版本1607(周年纪念更新)及更高版本允许您访问没有前缀的更长路径。
shell的部分CreateProcess
和LoadLibrary
不支持> MAX_PATH无论你做什么。