我需要通过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时,它不会给出任何异常,但操作也不会成功。
答案 0 :(得分:0)
可以复制此行为。
当检查 ProcessStartInfo
变量(您的proc
变量)<观察窗口中的 打开它以查看所有属性时,会发生此异常。在监视窗口中关闭它以便隐藏所有属性时,不会抛出错误!
可以观看proc.Arguments
,也可能观看其他一些。
我认为其中一个吸气剂会在内部发生变化,从而导致出现此错误。
我的德国异常消息是“System.InvalidOperationException:'FürdasProcess-Objekt muss die UseShellExecute-Eigenschaft auf”false“festgelegt sein,um Umgebungsvariablen zu verwenden。'”