12

我正在用 C# 创建一个控制台应用程序,在执行时,它会传递一堆数据。其中三个是短字符串,例如用户名、密码等。然而,其中一个是相当长的 XML 文档。

将字符串作为命令行参数传递时,字符串可以有多长?

在执行时将数据传递到 C# 控制台应用程序是否有更好的选择?

4

2 回答 2

16

在此处找到以下有关限制:

  • CreateProcess 函数的最大命令行长度为 32767 个字符。此限制来自 UNICODE_STRING 结构。

  • CreateProcess 是创建进程的核心函数,因此如果您直接与 Win32 对话,那么这是您唯一需要担心的限制。但是,如果您通过其他方式到达 CreateProcess,那么您经过的路径可能会有其他限制。

  • 如果您使用的是 CMD.EXE 命令处理器,那么您还需要遵守 CMD.EXE 施加的 8192 个字符的命令行长度限制。

  • 如果您使用的是 ShellExecute/Ex 函数,那么您将受到 ShellExecute/Ex 函数施加的 INTERNET_MAX_URL_LENGTH(大约 2048)命令行长度限制的约束。(如果您在 Windows 95 上运行,则限制仅为 MAX_PATH。)

有什么更好的方法或替代方法 - 使用文件(可能是 XML)和所有参数,并将此文件作为命令行参数传递。

于 2012-06-17T08:27:57.583 回答
3
于 2012-06-17T08:43:37.673 回答