进程启动异常“文件名或扩展名太长”,是否可以由arg行而不是文件名引起?

时间:2013-10-10 21:03:44

标签: c# process

我正在使用System.Process启动一个外部程序,我刚刚得到一个“文件名或扩展名太长”的例外。但是,我相信文件名很好,但参数是一个长字符串(33,000个符号)的地狱。该字符串可以导致异常吗?

1 个答案:

答案 0 :(得分:3)

是。该文本是与ERROR_FILENAME_EXCED_RANGE对应的错误消息,其他用户报告它适用于整个命令长度而不仅仅是可执行文件名。另见

您肯定超出了限制,但我同意错误信息可能会更好。 CreateProcess文档说:

  

lpCommandLine [in, out, optional]

     

要执行的命令行。此字符串的最大长度为32,768个字符,包括Unicode终止空字符。如果lpApplicationName为NULL,则lpCommandLine的模块名称部分仅限于MAX_PATH个字符。

对于ShellExecute,限制甚至更低。汉斯联系了Raymond Chen撰写的一篇精彩的博客系列,讨论了这些限制和解决方法,请参阅问题评论。