当前位置: 首页 > news >正文

最大路径长度限制

在 Windows API ((以下段落) 中讨论的一些例外情况)中,路径的最大长度为 MAX _ PATH, 定义为 260 个字符。 按以下顺序构造本地路径:驱动器号、冒号、反杠、用反杠分隔的名称组件和终止 null 字符。 例如,驱动器 D 上的最大路径为"D:某些 \ 256 个字符的路径字符串 < > NUL",其中 < "NUL"表示当前系统代码页的不可见终止 > null 字符。 (此处 < > 字符集,用于视觉清晰,不能是有效路径字符串的一)

例如,如果要将具有长文件名的 git 存储库克隆到本身具有长名称的文件夹,则可能会达到此限制。

备注

Windows API 中的文件 I/O 函数将"/"转换为"",作为将名称转换为 NT 样式名称的一部分,但使用"?" 前缀时除外,如以下部分 \ \ \ \ 所述。

该Windows API 具有许多函数,这些函数还具有 Unicode 版本,以允许最大总路径长度为 32,767 个字符的扩展长度路径。 此类路径由反杠分隔的组件组成,每个组件最多返回 GetVolumeInformation函数 的 lpMaximumComponentLength 参数中返回的值 (此值通常为 255 个字符) 。 若要指定扩展长度路径,请使用 \ \ "?" \ 前缀。 例如 \ \ ,"?" \D: \ 非常长的路径"。

备注

最大路径为 32,767 个字符是近似路径,因为系统可能会运行时将"?" 前缀扩展为较长的字符串,并且此扩展适用于总 \ \ \ 长度。

"?" 前缀还可与根据 UNC 规则的通用命名约定构造 (\ \ \ 路径) 。 若要使用 UNC 指定此类路径,请使用 \ \ "?" \UNC \ " 前缀。 例如 \ \ ,"?" \UNC \ \ 服务器共享",其中"server"是计算机的名称,"share"是共享文件夹的名称。 这些前缀不用作路径本身的一部分。 它们指示路径应该以最小修改方式传递给系统,这意味着不能使用正斜杠来表示路径分隔符,不能使用一个表示当前目录的周期,或者使用双点表示父目录。 由于不能将 \ \ "?" 前缀用于相对路径,因此相对路径始终限制为 \ MAX _ PATH 字符总数。

无需对路径和文件名字符串执行任何 Unicode 规范化供 Windows 文件 I/O API 函数使用,因为文件系统将路径和文件名视为 WCHAR 的不透明序列。 应在对文件 I/O API 函数的相关调用的外部执行应用程序Windows规范化。

使用 API 创建目录时,指定的路径不能过长,因此不能追加 8.3 文件名 (也就是说,目录名称不能超过 MAX _ PATH 减 12) 。

shell 和文件系统具有不同的要求。 使用命令行 API 创建Windows shell 用户界面无法正确解释的路径。

在版本 1607 Windows 10中启用长路径

从 Windows 10版本 1607 开始,已从常见的 Win32 文件和目录函数中删除 MAX _ PATH 限制。 但是,必须选择加入新行为。

若要启用新的长路径行为,必须同时满足以下两个条件:

  • 注册表项 Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem\LongPathsEnabled (Type: REG_DWORD) 必须存在,并且必须设置为 1。 第一次调用受影响的 Win32 文件或目录函数后) 每个进程的系统 (将缓存密钥的值 (请参阅下面的函数) 。 在进程的生存期内,不会重新加载注册表项。 为了使系统上的所有应用能够识别密钥的值,可能需要重新启动,因为某些进程可能在设置密钥之前启动。

还可以将此代码复制到可进行此设置的文件,或使用具有提升权限的终端窗口中的 .reg PowerShell 命令:

  • cmd
  • PowerShell
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001

 备注

此注册表项也可通过 中的 组策略控制 Computer Configuration > Administrative Templates > System > Filesystem > Enable Win32 long paths 。

  • 应用程序清单还必须包含 longPathAware 元素。

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

如果选择加入长路径行为,则这些目录管理功能将不再具有 MAX _ PATH 限制:CreateDirectoryW、CreateDirectoryExW GetCurrentDirectoryW RemoveDirectoryW SetCurrentDirectoryW。

如果选择加入长路径行为,则这些文件管理功能将不再具有 MAX _ PATH 限制:CopyFileW、CopyFile2、CopyFileExW、CreateFileW、CreateFile2、CreateHardLinkW、CreateSymb一LinkW、DeleteFileW、FindFirstFileW、FindFirstFileExW、FindNextFileW、GetFileAttributesW、 GetFileAttributesExW、SetFileAttributesW、GetFullPathNameW、GetLongPathNameW、MoveFileW、MoveFileExW、MoveFileWithProgressW、ReplaceFileW、SearchPathW、FindFirstFileNameW、FindNextFileNameW、FindFirstStreamW、FindNextStreamW、GetCompressedFileSizeW、GetFinalPathNameByHandleW。

相关文章:

  • 启动配置数据(BCD)存储
  • 什么是EV 代码签名证书
  • 代码签名是什么
  • 使用DD_XOFT实现带有安全控件、U盾的输入
  • Windows驱动开发入门指引
  • MapVirtualKey
  • 键盘扫描码与虚拟码的关系
  • 事件和消息的区别
  • 虚拟键码是什么
  • sikuli
  • OCR-光学符号识别
  • HTML DOCTYPE 声明
  • 图像四种基本类型简介
  • 常见图像格式清晰度对比
  • netsh命令
  • [译]CSS 居中(Center)方法大合集
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • canvas 高仿 Apple Watch 表盘
  • Docker容器管理
  • golang 发送GET和POST示例
  • Gradle 5.0 正式版发布
  • Invalidate和postInvalidate的区别
  • LeetCode18.四数之和 JavaScript
  • Python socket服务器端、客户端传送信息
  • spring-boot List转Page
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 力扣(LeetCode)22
  • 漂亮刷新控件-iOS
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 说说我为什么看好Spring Cloud Alibaba
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $.ajax()参数及用法
  • (1)安装hadoop之虚拟机准备(配置IP与主机名)
  • (13)Hive调优——动态分区导致的小文件问题
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (4)logging(日志模块)
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十六)串口UART
  • (算法)Game
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • ./和../以及/和~之间的区别
  • .naturalWidth 和naturalHeight属性,
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • /usr/local/nginx/logs/nginx.pid failed (2: No such file or directory)
  • @requestBody写与不写的情况
  • [2018][note]用于超快偏振开关和动态光束分裂的all-optical有源THz超表——
  • [202209]mysql8.0 双主集群搭建 亲测可用