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

翻译《The Old New Thing》- 解除路径的 MAX_PATH 限制仅适用于路径本身

Removing the MAX_PATH restriction on paths applies only to paths - The Old New Thinghttps://devblogs.microsoft.com/oldnewthing/20250611-00/?p=111262


问题描述

        一位客户在使用 Windows 长路径时遇到问题:尽管使用了 \\?\ 长路径前缀,仍然无法创建长路径文件。
        客户查阅文档后确认,\\?\ 前缀始终可用,并进一步通过注册表键和应用程序清单(manifest)启用了无需 \\?\ 的长路径支持,但问题依旧存在。

        客户提供了示例程序,路径为:

C:\looooooooo[此处省略1000个字母o]ooong.txt

        该路径总长度远低于 32,767 字符的限制,为何仍无法使用?


根本原因

        虽然 \\?\ 前缀和系统设置可以将完整路径的长度限制提升至 32,767 字符,但路径中**每个单独组成部分(如文件名或文件夹名)**的长度仍受限制。
可通过调用 GetVolumeInformation 查询卷的最大组件长度(lpMaximumComponentLength),常见值包括:

  • 255 字符(exFAT、NTFS)

  • 110 字符(Joliet CD-RW Unicode 模式)

  • 网络卷由网络协议决定

        客户示例中的文件名超过 1000 字符,显然超出了文件系统的最大组件长度限制,因此操作失败。


解决方案与建议

  1. 缩短单个组件长度
    将路径拆分为多个较短的组成部分(例如每个不超过 100 字符),但总长度仍超过 MAX_PATH(260 字符)。
    例如:
    C:\short\short\short\...\short.txt(总长度 >260,但每个组件 <100)

  2. 理解 32,767 字符的实际限制
    该限制包含系统内部处理时的扩展开销,实际可用长度略低于 32,767。


总结

  • \\?\ 和系统设置仅解除完整路径的长度限制,不解除单个路径组件的长度限制

  • 文件系统对文件名/文件夹名的长度有独立限制,需通过 GetVolumeInformation 查询。

  • 设计长路径时,需同时考虑完整路径长度和单个组件长度。

http://www.dtcms.com/a/264345.html

相关文章:

  • 通过http调用来访问neo4j时报错,curl -X POST 执行指令报错
  • C# 程序:查看 PageUp 热键消息映射表
  • torch.nn
  • Vue 安装使用教程
  • [Python] -基础篇8-Python中的注释与代码风格PEP8指南
  • muduo
  • SQL学习笔记6
  • OpenCV篇——项目(一)OCR识别读取银行卡号码
  • 在 Docker 容器中使用内网穿透
  • ubuntu 安装QT
  • 【python】三元表达式
  • Jeecg前端经验汇总
  • 扫描电子显微镜(SEM)夏令营面试基础题及答案
  • 五个元素一行均分三个换行且有间距,如何均分布局
  • 设计模式之上下文对象设计模式
  • 机器学习在智能金融风险评估中的应用:信用评分与欺诈检测
  • 电脑键盘不能打字了怎么解决 查看恢复方法
  • 无人机一机多控技术要点难点
  • Redis 概述及安装
  • 设计模式之组合模式
  • RabbitMQ:消息队列的轻量级王者
  • 系统安全之大模型案例分析
  • 用openCV实现基础的人脸检测与情绪识别
  • 磐维数据库panweidb3.1.0单节点多实例安装
  • 【Python】断言(assert)
  • 1.MySQL之如何定位慢查询
  • 隔离网络(JAVA)
  • 【前端】vue工程环境配置
  • linux 用户态|内核态打印函数调用进程的pid
  • OEM怎么掌握软件开发能力