在Windows中克服最大的文件path长度限制

我们的一个客户习惯性地使用很长的path名(几个嵌套的文件夹,名字很长),我们经常遇到“用户教育问题”,以便将path缩短到less于260个字符。

有没有可用的技术scheme,我们可以在Windows 7和Windows 2008 R2中popup一些开关来说“是的,只要忽略这些历史问题,就可以使+260字符的path名称起作用”。

PS我已阅读并完全通过命名文件,path和命名空间 unnedified

  • Windows 2008 Server SP2 64位 - TCP连接在TIME_WAIT之后永不释放
  • 我应该安装Windows Management Framework 3.0吗?
  • 使用Kerberos和AD挂载NFS3
  • 阻止操作系统指纹识别Windows Server 2008 IIS7
  • 远程桌面通过远程桌面重新启动后无法远程桌面服务器
  • 活动目录Kerberos问题KDC_ERR_S_PRINCIPAL_UNKNOWN
  • 顶点2 SSD一次冻结60秒
  • 锁屏不记住用户名
  • 4 Solutions collect form web for “在Windows中克服最大的文件path长度限制”

    方法在那里,但直到微软重新编码文件浏览器小部件,我们几乎坚持这个老问题。 这是不理想的,但这是它的工作原理。

    只是提到一个技巧,我没有看到在这里提到。

    以这个文件为例:

    C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

    这个完整的文件path长度是290个字符。 shell(Windows资源pipe理器)和大多数命令行实用程序可能不会让你触摸它。

    像这样使用subst命令:

     subst X: "C:\Folder1\Really Long Path\Such Recursion\So Deep\Wow" 

    现在你可以这样访问(并删除,移动等)文件:

    X:\Still Going\I will run out of ideas soon\I have organizational problems\Obsessive compulsive subdirectory disorder\Here is a guid for no good reason\936DA01F-9ABD-4d9d-80C7-02AF85C822A8\Almost there\Tax Returns\2013\2013_tax_return.pdf

    而现在这个文件名只有~235个字符左右,所以你不会再遇到“文件名太长”的问题。

    在Windows API中,有一个被称为MAX_PATH的臭名昭着的常量。 MAX_PATH是260个字符。 NTFS文件系统实际上支持最多32,767个字符的文件path。 而且,通过访问Windows API函数的Unicode(或“wide”)版本,还可以使用32,767个字符长的path名,也可以使用\\?\作为path的前缀。

    在Windows世界里, MAX_PATH早已被设置了很久 。 我认为这与当时的ANSI标准有些关系……但是现在微软很难改变这种情况,因为现在我们有成千上万的程序和应用程序,包括一些由微软自己编写的程序和应用程序, MAX_PATH ,如果常数突然改变,将会以奇怪的新方式失败。 (缓冲区溢出,堆损坏等)

    你可以通过使用\\?\ C:notation来解决这个限制。 这是丑陋的,但它支持文件长度高达2 ^ 15。

    http://msdn.microsoft.com/en-us/library/aa365247(v=vs.85).aspx#maxpath

    微软现在有一个可用的修补程序,从Windows 10开始,在命名文件,path和命名空间 MSDN文章中进行了解释。

    darthcoder已经回答了有关\\?\C:表示法解决方法的详细信息,但是HKLM\SYSTEM\CurrentControlSet\Control\FileSystem LongPathsEnabled (Type: REG_DWORD)现在有一个registry项,可用于删除MAX_PATH限制一个单一的系统。 本文还提到了在Computer Configuration > Administrative Templates > System > Filesystem > Enable NTFS long paths以进行组织或组范围实施(如果需要)的组策略控制的支持。

    服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器.