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