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

我正在尝试找到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:

    

可以在这里进一步阅读。