扩展长度路径是否可以安全使用?

时间:2010-08-28 18:02:40

标签: windows winapi path ntfs unc

我在MSDN上偶然发现this article说道路径可以是259个字符+ NUL终止,但是如果你用“\\?\”作为前缀,WinAPI允许你使用

  

最大总路径长度为32,767个字符。

渴望看到它正常工作我尝试在资源管理器中使用该前缀(在XP SP3上),但它根本不起作用(在任何路径上)。如果您将\\?\C:\Path\to\an\existing.file放在资源管理器栏上,则会显示“找不到文件”错误。

所以我很困惑。我可以为(非古老的)Windows编写一些能够充分利用NTFS上提到的路径大小的东西吗?为什么资源管理器不使用它?

3 个答案:

答案 0 :(得分:2)

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

如果您只是在Windows explorerunder xp中键入该路径,那么这不起作用,因为扩展路径语法只是WIn32 API的转义序列而不是Windows资源管理器。现在,在Win7中,这确实有效,因为很多人都希望这可以工作。

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

答案 1 :(得分:1)

在有人告诉我RTFM之前......

  

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

在次要说明中,这让我想知道使用非法文件名从资源管理器中隐藏文件(或查找此类文件)的可能性。

答案 2 :(得分:0)

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

您绝对可以安全地使用它们,但是您可能会激怒那些想要使用资源管理器等工具来浏览它们的人。我们在野外一直看到这样的道路。有时人们在使用MY_FAVORITE_TOOL删除它时会非常惊讶......