在Windows 10中,是否仍存在MAX_PATH问题?

84

请问在 Windows 10 (技术预览版) 中是否仍存在 MAX_PATH 问题?若存在,路径和单个文件名最多可以包含多少个字符?


12
当你给一个回答投反对票时,请留下评论。例如,可以提供一些能够轻松找到答案的链接或者解释问题本身出了什么问题。请注意,翻译过程中不会添加任何额外内容或解释。 - dkeck
尝试使用Build 14352并设置GP条目。 - magicandre1981
可以使用组策略设置或手动更改注册表。请参见https://news.slashdot.org/story/16/05/31/0012222/microsoft-removes-260-character-path-length-limit-in-windows-10-redstone - holmb
我最近在安装Python时看到了这个提及,因为他们在安装后有一个选项可以禁用MAX_PATH限制。为什么会有人使用超过260个字符的路径名呢? - Ungeheuer
@Ungeheuer 当你将数据从应用程序序列化到文件系统以与其他开发人员共享时,可能会出现这种情况。许多内容序列化器在创建这些文件夹和文件时会遵循路径结构,特别是关于CMS页面树和数据项的结构。 - Ben Sewards
3个回答

79

为了保持与旧软件的兼容性,这个问题在Windows中将一直存在。使用NT风格的名称语法"\\?\D:\very long path"可以解决这个问题。

从Windows 10(版本1607-周年更新)和Windows Server 2016开始,您可以通过覆盖组策略条目启用NTFS长路径来忽略MAX_PATH问题,在计算机配置->管理模板->系统->文件系统下:

enter image description here

enter image description here

应用程序必须在应用清单中添加一个名为longPathAware的条目,类似于DPIAware。
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <longPathAware>true</longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>

19
为什么Linux或Mac没有遇到这些兼容性问题?为什么不能扩展非Unicode的Win32文件API(在现有IO处理函数中添加一些条件),以便能够使用如MAX_PATH2 = 4096(或巧妙的动态分配)的路径长度。然后,旧软件将仅使用实现的传统部分。但新软件,特别是Microsoft产品(包括cmd、explorer、powershell、VS),应该利用新功能。操作系统应该隐藏所有这些技术历史:“只需使用dev:\path\file.ext,我会决定最佳选择。” - dkeck
5
请咨询微软公司。我们无法告诉您他们是如何做出关于该问题的决策的原因。 - magicandre1981
7
是的,我并不在乎他们如何做到这一点,但为什么他们在2015年仍然强制我们尊重MAX_PATH呢... - Ryan Mann
6
260个字符应该足够了,任何人都能理解。 ;) - paulm
8
@AndrewS 这个探险家还不支持长路径。他们正在努力改进。 - magicandre1981
显示剩余15条评论

5
这是一些ansible代码,可以启用长路径以避免在@magicandre1981答案中进行所有的点击操作。这在Windows Server 2016上经过了测试,也应该适用于Windows 10。
- name: Remove filesystem path length limitations
  win_regedit:
    path: HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem
    name: LongPathsEnabled
    type: dword
    data: 1
    state: present

0

是的,它仍然存在。我现在遇到了一个问题,通常使用映射网络驱动器来缩短路径的方法似乎无法让我打开文件,但它可以让我重命名和移动它们。


1
subst 是你的好朋友。 - evandrix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接