与长路径一起使用时,CreateDirectory 失败并出现错误 123
Posted
技术标签:
【中文标题】与长路径一起使用时,CreateDirectory 失败并出现错误 123【英文标题】:CreateDirectory fails with error 123 when used with a long path 【发布时间】:2013-10-17 05:59:44 【问题描述】:我正在尝试克服 win32 API 路径上的 MAX_PATH 限制。正如这些 API(即 CreateDirectory)的 msdn 文档中所建议的那样,我已尝试在路径前添加 '\\?\' 但继续收到错误 123。
这是我的代码 -
wstring path = L"\\\\?\\D:\\<LongPath>";
if(!CreateDirectory(path.c_str(), NULL)) //translates to CreateDirectoryW
// Get the error using GetLastError()
错误 123 代表 - “文件名、目录名或卷标语法不正确。”。还有什么我需要做的不同的事情吗?
【问题讨论】:
只是为了好玩,你能告诉我们这些路径之一吗?另外,什么是卷格式(FAT、FAT32、NTFS 等)?最后,这个超长路径的任何单个子组件是否超过 255 个字符(通常,使用GetVolumeInformation()
来了解确切的限制)?
卷格式为 NTFS。路径中的一个目录包含超过 255 个字符,这导致了问题。修复后,CreateFirectory 适用于大于 255 的路径长度。感谢您的帮助!
【参考方案1】:
文件夹名称不能包含一些特殊字符,例如 ?:/*"
【讨论】:
路径前缀 \\?\ 用于允许长路径。是允许的以上是关于与长路径一起使用时,CreateDirectory 失败并出现错误 123的主要内容,如果未能解决你的问题,请参考以下文章
C# WMI 在远程 PC 上运行一个 exe,然后在同一台 PC 上运行另一个 exe,然后在网络路径上调用 Directory.CreateDirectory 并失败
使用System.IO.Directory.CreateDirectory()时出现FileNotFoundException