代码之家  ›  专栏  ›  技术社区  ›  Camilo Martin

延长路径是否安全使用?

  •  3
  • Camilo Martin  · 技术社区  · 14 年前

    我只是偶然发现 this article 在msdn上,这表示路径可以是259个字符+nul终止,但如果您在其前面加上\?\“WinAPI允许您使用

    最大路径总长度为32767个字符。

    我曾尝试使用Explorer的前缀(在xp sp3上),但它根本不起作用(在任何路径上)。如果你放 \\?\C:\Path\to\an\existing.file 在浏览器栏上,它会给出“找不到文件”错误。

    所以我很困惑。我可以为(非古老的)窗口编写一些代码,以便充分利用NTFS上提到的路径大小吗?为什么资源管理器不使用它?

    3 回复  |  直到 13 年前
        1
  •  2
  •   Dominik Weber    14 年前

    有一组API调用可用于扩展路径,有些则不适用。MSDN通常会提到这一点。

    如果您只是在Windows ExplorerUnder XP中键入该路径,则不起作用,因为扩展路径语法只是Win32 API的转义序列,而不是Windows Explorer的转义序列。现在,在Win7中,这是可行的,因为许多人都希望这能奏效。

    对于长路径,如果更改工作目录或打开以子目录作为根目录的资源管理器,也会有所帮助。

        2
  •  1
  •   Camilo Martin    14 年前

    在有人告诉我RTFM之前…

    请注意,这些示例旨在与Windows API函数一起使用,不一定都与Windows Shell应用程序(如Windows资源管理器)一起使用。
    […]
    对于文件I/O,使用“\”?\“路径字符串的前缀告诉Windows API禁用所有字符串分析,并将其后面的字符串直接发送到文件系统。例如,如果文件系统支持大路径和文件名,则可以超过Windows API强制实施的最大路径限制。

    其次,这让我怀疑使用非法文件名在资源管理器中隐藏文件(或查找此类文件)的可能性。

        3
  •  0
  •   jrtipton    14 年前

    您是在问为什么Windows中的所有组件都不支持它,还是在问使用这些长路径是否合法?

    当然,您可以安全地使用它们,但是您可能会激怒那些想使用像Explorer这样的工具来浏览它们的人。我们在野外一直看到这样的小路。有时,当人们不能使用我最喜欢的工具删除它时,他们会非常惊讶…