将冗长的字符串(作为参数)传递到控制台应用程序中

meh*_*meh 12 .net c# console-application string-length command-line-arguments

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

字符串在作为命令行参数传递时可以多长时间?

是否有更好的替代方案可以在执行时将数据传递给C#控制台应用程序?

Reg*_*for 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,包含所有参数,并将此文件作为命令行参数传递.