根据此处的指定,可以在没有MAX_PATH
长度限制的情况下在Windows上使用绝对路径。
然而,我注意到以\?
开头的路径在某些旧版本的Windows中不起作用。
我需要检测哪个版本(例如,使用此处描述的功能之一(来帮助我的软件决定使用\?
路径?
如果在unicode路径中使用\?
前缀,则任何版本的windows(甚至是win2000和xp(都始终支持长路径。关于支持长路径的问题-只影响其他路径类型,这些路径类型不是以\?
开头的,例如c:*
来自最大路径长度限制
Windows API有许多函数也有Unicode版本,允许使用扩展长度路径,最大总路径长度为32767个字符。。。要指定延长路径,请使用
"\?"
前缀。例如,"\?D:very long path"
通常在任何单独的函数文档中也直接说明\?
前缀(如果此api支持它-文件I/O函数始终支持此前缀,而shell api从不支持(
例如来自GetFileAttributesW
若要将此限制扩展到32767个宽字符,请调用函数的Unicode版本(GetFileAttributesW(,并将
"\?"
前置为路径
CreateFileW
上相同,依此类推。
若要将此限制扩展到32767个宽字符,请使用此Unicode版本的函数并在路径前加上
"\?"
有趣的是,启动Windows 10版本1607时,您可以选择全局删除系统中的MAX_PATH限制,而无需任何前缀:
https://learn.microsoft.com/de-de/windows/win32/fileio/maximum-file-path-limitation?tabs=registry