【问题标题】:Is the caller of a Windows program responsible for adding \\?\ to long file name argumentsWindows 程序的调用者是否负责将 \\?\ 添加到长文件名参数
【发布时间】:2012-08-20 01:41:01
【问题描述】:

在我的 Java 程序中,我使用命令行库来分叉 Java 进程。当我在java.exe -jar 调用中传递的 JAR 文件的文件路径超过 Windows 的 260 个字符的路径长度限制时,这将失败(取决于程序的使用方式)。 (错误消息是Error: Unable to access jarfile,后跟路径名。)我可以通过(手动)将\\?\ 前缀添加到JAR 文件名来使Java 调用工作。这解决了一个特定的问题实例,但这通常是正确的方法吗?

我是否应该期望 Windows 程序正确处理作为命令行参数传递的长路径,或者 - 检测长路径并添加 \\?\ 前缀是调用者的责任吗?

或者不太笼统:java.exe 或命令行库中是否存在错误?

【问题讨论】:

    标签: windows winapi cmd executable command-line-arguments


    【解决方案1】:

    大多数程序会简单地获取文件名并将其按原样传递给 API 函数,例如 CreateFile()。因此,在这种情况下,调用者确实有责任检测长文件名并在传递之前相应地为其添加前缀。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多