【问题标题】:C# Passing arguments to a process greater than the standard sizeC#将参数传递给大于标准大小的进程
【发布时间】:2018-04-05 06:31:27
【问题描述】:

我正在通过System.Diagnostics.ProcessAssembly 在 C# 中创建自定义进程。我需要将参数传递给进程,并且能够通过process.StartInfo.Arguments API 来实现。但是,当参数大小很大时,我会得到 exceptions 。看起来它不允许超出流程参数的某个限制。有没有办法/调整以某种方式创建一个进程,以便它可以接受任何大小的参数(不希望将参数保留在 DB 中)?

【问题讨论】:

  • 有哪些例外?而且你也忘了包含你的代码?

标签: c# process system.diagnostics


【解决方案1】:

来自Docs

包含要传递给目标的参数的单个字符串 FileName 属性中指定的应用程序。默认是一个 空字符串 ("")。在 Windows Vista 和更早版本的 Windows 操作系统,添加到参数的长度 进程的完整路径长度必须小于 2080。 Windows 7 及更高版本,长度必须小于 32699。

我认为没有办法避免该限制 oob。

解决这个问题的方法可能是将参数写入临时文件,然后将路径传递给该文件。

【讨论】:

  • 感谢您的回复,但是,我不是在寻找那种临时文件方法。
【解决方案2】:

什么参数这么长?您是否在参数中传递数据?

您可以尝试压缩数据并作为 base64 字符串传递。假设这些过程是你自己的。

否则,您可能希望查看 WCF,您将在其中托管 IIS 中的进程或作为 Windows 服务,使您能够调用它们的方法,传递您需要的任何数据。

【讨论】:

    猜你喜欢
    • 2023-01-07
    • 1970-01-01
    • 2019-01-19
    • 2017-10-18
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    相关资源
    最近更新 更多