视窗 10 最大路径长度限制



我和我之前的一些人一样,对最大路径长度限制感到困惑。 我使用机器人复制和新的 Windows 10 机器成功地将文件树传输到 NAS。
在源计算机上,所有文件的大小限制为 260 个字符。它们已使用 robocopy 从路径 e: 复制到路径 as-3tb-backup\Public\Save_2019 的路径。 我想之后用一个小的 C# 程序检查它,但我没有成功。 FileInfo 和 File.OpenRead 都找不到具有 NAS 名称扩展路径的文件。 所有程序,如记事本,Visual Studio Code,Windows资源管理器显示或打开此文件都没有问题。 我尝试使用此处显示的前缀\\?\:https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maxpath 但是使用\\?as-3tb-backup----的尝试失败了。 链接的文章中仍然有一个提示,用于在更改注册表时扩展路径。我想避免这种情况,因为那样我将不得不更改所有 Windows 计算机,并且由于 Windows 自己的程序无需注册表破解即可工作,这对我来说应该是可能的。

string fn1 = @"\?\nas-3tb-backupPublicVeryLongPathToFile";
bool b1 = new FileInfo(fn1).Exists;
if (b1) {
using (FileStream stream = File.OpenRead(fn1)) {
var b = stream.ReadByte();
}
}

是否已更改 C# 解决方案中的 app.config 文件,如此处所述 .NET 4.6.2 和 Windows 10 上的长路径。

在这篇文章中,他在很长的路径上创建了一个文件夹,但也许它也会帮助你。

他使用的代码:

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

解决方案

创建清单文件

应用程序清单文件必须包含

<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
</windowsSettings>
</application>

无需在配置文件或计算机策略中进行任何更改(可能适用于 Win32 应用,但未经测试(

前缀 \\?\ 不适用于 UNC 路径 像 c:\ 这样的本地路径必须写为本地 UNC 路径,例如 \\?\C:\

测试系统

视窗 10 版本 1909 .Net Framework 4.7 C# .Net 控制台应用 64 位

最新更新