Windows 10中是否仍存在MAX_PATH问题

dke*_*eck 75 path limit long-filenames windows-10

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

mag*_*981 64

该问题将始终存在于Windows中,以保持与旧软件的兼容性.使用NT样式的名称语法 "\\?\D:\very long path"来解决此问题.

在Windows 10(版本1607 - 周年纪念更新)和Windows Server 2016中,您似乎可以通过覆盖enable NTFS long pathsComputer Configuration - > Admin Templates- > System- > 下的组策略条目来忽略MAX_PATH问题FileSystem:

在此输入图像描述

在此输入图像描述

应用程序必须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>
Run Code Online (Sandbox Code Playgroud)

  • 为什么Linux或Mac不会遇到这些兼容性问题?为什么不能扩展非Unicode Win32文件API(在现有IO处理函数中具有某些条件)才能使用例如MAX_PATH2 = 4096(或聪明的动态分配).然后,旧软件将仅使用实现的遗留部分.但是新软件尤其是Microsoft产品(包括cmd,explorer,powershell,VS)应该利用这些新功能.操作系统应该影响所有这些技术历史:"只需使用dev:\ path\file.ext和我操作系统将决定什么是最佳选择." (12认同)
  • @AndrewS资源管理器尚未知道长路径.他们仍在努力 (7认同)
  • 是的,我真的不在乎他们是怎么做的,但为什么他们仍然强迫我们在2015年尊重MAX_PATH .... (6认同)
  • 问这个微软.我们无法告诉您他们为何以及如何就此问题做出决定. (4认同)
  • 他们正在讨论关于为win10修复它的核心,并最终打破兼容性.我不确定他们在这个问题上的位置,但他们真的在考虑这件事. (3认同)
  • 微软应该给我们选择在注册表中将其关闭到最大NT支持"32,000"的东西......让我们担心我们使用什么软件以及它是否会破坏...使用node.js Windows令人沮丧......我要让linux vm只是为了做节点工作......然而,微软将Windows视为这个令人敬畏的开发环境......有时我甚至无法构建我的.Net代码我想要因为命名空间变长,我必须以不同于命名空间的方式重命名文件夹... (3认同)
  • 任何人都应该有260个字符;) (3认同)
  • 也许不是一个相关的评论,但我的观点是,这些事情将继续推动开发人员远离Windows; 命令行工具在Linux上更好,linux没有这些"破坏 - 无法修复"的限制 (2认同)
  • @Ryios不,一般注册表选项都不好.我认为应用程序清单中的设置是最好的方法. (2认同)
  • @ justin.m.chase看起来像MS遵循我的建议,并在Win10版本1607 - 周年更新中添加了基于应用程序清单设置的解决方案. (2认同)
  • 他们可能应该像在Vista中那样做.总是启用它,让许多程序在堆栈缓冲区溢出时崩溃而不进行任何诊断,并让每个人都惊叹"纪念日太糟糕!".但程序员将修复他们的错误,下一个版本将"很棒".如果不提及/ GS后果,这不是一个完整的答案. (2认同)
  • 即使打开了周年纪念更新和长文件路径,Windows 10仍然无法解压缩重压缩文件而不会对此抱怨.这在21世纪是荒谬的. (2认同)
  • 对于[原因](http://stackoverflow.com/q/1880321/995714)。可能只是为了让程序分配一个固定的缓冲区来接收来自Windows的路径,而在DOS 8.3时代,260个字符确实很长 (2认同)

lib*_*rce 6

这里有一些可靠的代码,可以启用长路径以避免在@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
Run Code Online (Sandbox Code Playgroud)