Windows 10 中是不是仍然存在 MAX_PATH 问题

Posted

技术标签:

【中文标题】Windows 10 中是不是仍然存在 MAX_PATH 问题【英文标题】:Does MAX_PATH issue still exists in Windows 10Windows 10 中是否仍然存在 MAX_PATH 问题 【发布时间】:2015-02-25 03:41:48 【问题描述】:

有人可以告诉我们/我MAX_PATH issue 是否仍然存在于 Windows 10(技术预览版)中。如果存在:路径和单个文件名可以有多少个字符?

【问题讨论】:

请在投反对票时发表评论。例如。一些很容易找到答案的 URL。或者问题本身有什么问题。 尝试 Build 14352 并设置 GP 条目 要么使用组策略设置,要么手动更改注册表。见news.slashdot.org/story/16/05/31/0012222/… 我最近在安装 Python 时看到了这一点,因为他们在安装后可以选择禁用 MAX_PATH 限制。为什么有人会得到一个超过 260 个字符的路径名? @Ungeheuer 当您将数据从应用程序序列化到文件系统以与其他开发人员共享时,可能会发生这种情况。许多内容序列化程序在创建这些文件夹和文件时会遵循路径结构,尤其是在页面和数据项的 CMS 树方面。 【参考方案1】:

此问题将始终存在于 Windows 中,以保持与旧软件的兼容性。 Use the NT-style name syntax "\\?\D:\very long path" 解决此问题。

在 Windows 10(版本 1607 - 周年更新)和 Windows Server 2016 中,您似乎可以选择忽略 overriding a group policy entry enable NTFS long paths 下的 MAX_PATH 问题 Computer Configuration -> Admin Templates -> System -> @987654332 @:

应用程序必须在应用程序清单中有一个类似于 DPIAware 的条目 longPathAware

<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>

【讨论】:

为什么 Linux 或 Mac 没有遇到这些兼容性问题?为什么非 Unicode Win32 文件 API 不能扩展(在现有的 IO 处理函数中有一些条件)能够使用例如MAX_PATH2 = 4096(或聪明的动态分配)。然后,旧软件将仅使用实施的遗留部分。但新软件尤其是微软产品(包括cmd、explorer、powershell、VS)应该利用新特性。操作系统应该隐藏所有这些技术历史:“只需使用 dev:\path\file.ext,操作系统就会决定什么是最佳选择。” 问这个微软。我们无法告诉您他们为什么以及如何就这个问题做出决定。 是的,我真的不在乎他们是怎么做到的,但是为什么他们仍然在 2015 年强迫我们尊重 MAX_PATH ...... 260 个字符对任何人来说都应该足够了 ;) @AndrewS,Explorer 还不知道长路径。他们仍在努力【参考方案2】:

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

【讨论】:

subst 是你的朋友【参考方案3】:

这里有一些 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

【讨论】:

以上是关于Windows 10 中是不是仍然存在 MAX_PATH 问题的主要内容,如果未能解决你的问题,请参考以下文章

当前 Windows 版本中的 Win32 API 是不是仍然“原生”?

windows程序设计 获取系统文件路径

在 unix (linux/osx) 中创建的符号链接是不是仍然可以在 Windows 中工作?

Webdriver - 如何检查浏览器是不是仍然存在或仍然打开?

检查列表中是不是存在数字,应用引擎模板

如何检查 UIView 是不是仍然存在?