我正在使用C#创建一个控制台应用程序,它在执行时传递了一堆数据。其中有三个简短的字符串,如用户名、密码等。但是,其中一个是相当冗长的XML文档。
当将它们作为命令行参数传递时,这些字符串可以有多长?
有没有更好的选择可以在执行时将数据传递给C#控制台应用程序?
我正在使用C#创建一个控制台应用程序,它在执行时传递了一堆数据。其中有三个简短的字符串,如用户名、密码等。但是,其中一个是相当冗长的XML文档。
当将它们作为命令行参数传递时,这些字符串可以有多长?
有没有更好的选择可以在执行时将数据传递给C#控制台应用程序?
在这里找到了以下关于限制的内容:
由于UNICODE_STRING结构,CreateProcess函数的最大命令行长度为32767个字符。
CreateProcess是创建进程的核心函数,因此如果直接与Win32通信,则只需担心这个限制。但是,如果您通过其他方式访问CreateProcess,则您所经过的路径可能会有其他限制。
如果使用CMD.EXE命令处理器,则还需要遵守CMD.EXE强制执行的8192个字符命令行长度限制。
如果使用ShellExecute/Ex函数,则需要遵守ShellExecute/Ex函数强加的INTERNET_MAX_URL_LENGTH(大约为2048)命令行长度限制。(如果运行在Windows 95上,则限制只有MAX_PATH。)
更好的方法或替代方案是,使用文件(例如XML)来存储所有参数,并将该文件作为命令行参数传递。