如何在C#上以编程方式在cmd上运行带有多个参数的exe

时间:2016-11-29 16:08:23

标签: c# cmd

我需要通过C#代码执行带有参数的exe,如上图所示。

看起来像

C:\Users\singha33\Desktop\1111>TaskFileSigner.exe 
TaskFile="C:\Users\singha33\Desktop\1111\ApplyingSecurity.eTask.xml"   
ProcessFile="C:\Users\singha33\Desktop\1111\Firefox_Setup_Stub_46.0.1.exe" 
GenKey="Y" Singner="Ak"

我试过

System.Diagnostics.ProcessStartInfo proc = new System.Diagnostics.ProcessStartInfo();
proc.FileName = "C:\\Users\\singha33\\Desktop\\1111\\TaskFileSigner.exe";
string temp = "C:\\Users\\singha33\\Desktop\\1111\\ApplyingSecurity.eTask.xml";
string argument1 = "TaskFile=" + '"' + temp + '"';
string argument2 = "ProcessFile =" + '"' + "C:\\Users\\singha33\\Desktop\\1111\\Firefox_Setup_Stub_46.0.1.exe" + '"';
string argument3 = "GenKey =" + '"' + "Y" + '"';
string argument4 = "Signer =" + '"' + "Aksh" + '"';
proc.Arguments = String.Format("{0} {1} {2} {3}", argument1, argument2, argument3, argument4);
//proc.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process.Start(proc);

但它不起作用。我对这种工作很陌生,并且不知道如何继续前进。可能是我没有正确地传递论据或其他任何内容。

任何帮助都会很棒。

我在堆栈上搜索了类似的问题并找到了一些有用的主题,但它没有用。我认为参数格式不正确,但我不知道如何正确格式化。

一个观察:我得到了异常

  

“Process对象必须将UseShellExecute属性设置为false才能使用环境变量。”

当我调试并等待进程启动函数“System.Diagnostics.Process.Start(proc);”时。当我不等待并按F5时,它不会给出任何异常,但操作也不会成功。

enter image description here

1 个答案:

答案 0 :(得分:0)

可以复制此行为。

检查 ProcessStartInfo变量(您的proc变量)<观察窗口中的 打开它以查看所有属性时,会发生此异常。在监视窗口中关闭它以便隐藏所有属性时,不会抛出错误!

可以观看proc.Arguments,也可能观看其他一些。

我认为其中一个吸气剂会在内部发生变化,从而导致出现此错误。

我的德国异常消息是“System.InvalidOperationException:'FürdasProcess-Objekt muss die UseShellExecute-Eigenschaft auf”false“festgelegt sein,um Umgebungsvariablen zu verwenden。'”