刚遇到一个有趣的案例。
我的软件报告了由于路径长于 MAX_PATH 导致的故障。
该路径只是“我的文档”中的一个普通旧文档,例如:
C:\Documents and Settings\Bill\Some Stupid FOlder Name\A really ridiculously long file thats really very very very..........very long.pdf
总长度 269 个字符 (MAX_PATH==260)。
用户没有使用外部硬盘驱动器或类似的东西。这是 Windows 托管驱动器上的文件。
所以我的问题是这个。我应该关心吗?
我不是说我可以处理长路径,我问我是否应该。是的,我知道某些 Win32 API 上的“\?\”unicode hack,但似乎这种 hack 并非没有风险(如它正在改变 API 解析路径的方式),并且并非所有 API 都支持。
所以无论如何,让我陈述我的立场/主张:
- 首先,用户能够打破这个限制的唯一方法可能是她使用的应用程序使用了特殊的 Unicode hack。这是一个 PDF 文件,所以她使用的 PDF 工具可能使用了这个 hack。
- 我试图重现这一点(通过使用 unicode hack)并进行了实验。我发现虽然该文件出现在资源管理器中,但我对此无能为力。我无法打开它,我无法选择“属性”(Windows 7)。其他常用应用程序无法打开该文件(例如 IE、Firefox、记事本)。Explorer 也不会让我创建太长的文件/目录 - 它只是拒绝。命令行工具 cmd.exe 同上。
所以基本上,人们可以这样看:rouge 工具允许用户创建许多 Windows(例如资源管理器)无法访问的文件。我可以认为我不应该处理这个问题。
(顺便说一句,这不是对短最大路径长度的投票:我认为 260 个字符是个笑话,我只是说如果 Windows shell 和某些 API 不能处理 > 260 那么我为什么要?)。
那么,这是一个公平的观点吗?我应该说“不是我的问题”吗?
更新:刚刚有另一个用户有同样的问题。这次是一个 mp3 文件。我错过了什么吗?这些用户如何创建违反 MAX_PATH 规则的文件?