尽管处理\\?\
前缀是documented,但是SetCurrentDirectory()
显然不能做到这一点(see here)。即使我包含了ERROR_FILENAME_EXCED_RANGE
前缀,但传递的长度超过260个字符的路径始终会返回\\?\
。在Windows 7上进行了测试。
这使我想知道如何将当前目录更改为长度超过260个字符的路径。我是否必须将那条漫长的道路分解成最大的碎片。每个字符260个,并在每个字符上调用SetCurrentDirectory()
,或者推荐的处理此问题的方法是什么?
NB:我知道在Windows 10上,可以通过设置在清单中添加longPathAware
东西并设置相应的注册表标志来解决该问题。但是,我正在寻找一种同样适用于Windows 7和8的解决方案。