我正在使用 System.Process 来启动一个外部程序,但我刚刚收到一个“文件名或扩展名太长”异常。但是,我相信文件名很好,但参数是一个很长的字符串(33,000 个符号)。该字符串会导致异常吗?
是的。该文本是与 对应的错误消息ERROR_FILENAME_EXCED_RANGE,其他用户报告它适用于整个命令长度,而不仅仅是可执行文件名。也可以看看
您肯定超出了限制,尽管我同意错误消息可能会更好。文档CreateProcess说:
lpCommandLine [in, out, optional]要执行的命令行。该字符串的最大长度为 32,768 个字符,包括 Unicode 终止空字符。如果
lpApplicationName为 NULL,则模块名称部分lpCommandLine仅限于MAX_PATH字符。
因为ShellExecute极限甚至更低。Hans 链接了 Raymond Chen 撰写的精彩博客系列,其中讨论了这些限制和解决方法,请参阅问题评论。