今年System.Directory已更新为包含createFileLink
和createDirectoryLink
操作,而对于我来说,在Windows 10上,这两种操作都适用于相对路径。
当我在绝对路径上使用时(大约50个字符长度,所以我认为在unicode中它超过260)它在路径上加\\?\
(即"\\\\?\\"
),可以看到来自DIR
如下
<SYMLINKD> source [\\?\T:\Code\hLink\binaries\dest]
<SYMLINK> source.txt [\\?\T:\Code\hLink\binaries\dest\source.txt]
目录链接工作正常,但文件链接没有做任何事情,甚至没有说目标文件丢失。
当我使用绝对路径中没有MKLINK
的{{1}}创建文件链接时,它也可以正常工作,当我使用\\?\
和MKLINK
创建任一链接时有相同的结果。
这是Windows问题吗?我可以让Haskell使用短路径格式吗? (使用Win10显然我可以通过注册表启用长路径)
Windows api应该将\\?\
标题传递给符号链接吗?
参考文献:
MaxPath和\\?\
的含义,以及在Win10上禁用路径限制
https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath
更新日志报告将\\?\
添加到win32来电https://hackage.haskell.org/package/directory-1.3.1.1/changelog