繁体   English   中英

前缀“\\\\?\\”不适用于处理长路径

[英]Prepending “\\?\” doesn't work for handling long paths

我正在尝试找到Windows字符限制的解决方法,如果文件的名称> = 260个字符,则不允许复制文件。 根据这篇MSDN文章 ,如果文件名前面有\\\\?\\ ,这将绕过文件名长度限制。

我试过这个测试:

string source = "\\\\?\\C:\\Users\\xxxx\\Documents\\Visual Studio 2013\\Projects\\PDFConverterTester\\PDFConverterTester_BatchGUI\\bin\\Debug\\folder1\\a.txt";
string dest= "\\\\?\\C:\\Users\\xxxx\\Documents\\Visual Studio 2013\\Projects\\PDFConverterTester\\PDFConverterTester_BatchGUI\\bin\\Debug\\folder2\\a.txt";            
System.IO.File.Copy(source, dest);

但这引发了一个例外:

Illegal characters in path.

我应该以不同的方式应用此前缀吗?

编辑:我公司的IT政策不允许我在没有冗长的审核过程的情况下安装任何新软件,这意味着我无法更新到4.6.2。 所以我试图弄清楚如何使用我现有的Visual Studio .NET 4.5安装中的Windows API调用来解决这个问题。

要启用长路径支持,您需要定位.Net Framework 4.6.2(或更新版本),或者您需要告诉您的应用它可以支持长文件名。 为此,请将其添加到app.config:

<runtime>
  <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>

可以在这里进一步阅读。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM