我在使用Process.Start
执行外部控制台应用程序时遇到问题Process p = new Process();
p.StartInfo.WorkingDirectory = "dump";
p.StartInfo.FileName = "test.exe";
p.StartInfo.Arguments = s;
p.Start();
当p生成的参数执行时,外部应用程序崩溃,但如果我在命令行窗口中复制完全相同的参数,它运行正常。
所以我的问题是如何创建命令窗口的新实例,然后添加命令test.exe + s来运行?
如此有效地我启动cmd然后将我的参数添加到它
答案 0 :(得分:3)
如果您想通过cmd运行test.exe prm1 prm2
,请使用cmd.exe /c test.exe prm1 prm2
。虽然我真的不明白这与崩溃有什么关系。听起来问题出在test.exe
上 - 找出导致崩溃的原因,这有助于您修复C#代码,这样就不需要cmd
。
我要检查的其中一个地方是工作目录。当您将其设置为“dump”时,您确定当前目录是您所期望的吗?首先尝试使用完整路径。 test.exe
可能恰好在系统路径中,因此它会被执行,但它的工作目录不是它所期望的,这会导致它崩溃。
答案 1 :(得分:2)
试试这个:
ProcessStartInfo processToRunInfo = new ProcessStartInfo();
processToRunInfo.Arguments = "Arguments");
processToRunInfo.CreateNoWindow = true;
processToRunInfo.WorkingDirectory = "C:\\yourDir\\";
processToRunInfo.FileName = "test.exe";
//processToRunInfo.CreateNoWindow = true;
//processToRunInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process process = new Process();
process.StartInfo = processToRunInfo;
process.Start();
答案 2 :(得分:1)
Process p = new Process();
p.StartInfo.WorkingDirectory = "/full/path/to/dump";
p.StartInfo.FileName = "/full/path/to/test.exe";
p.StartInfo.Arguments = s; // will call 'text.exe s'
p.Start();
答案 3 :(得分:0)
看看MSDN。
您需要创建StartInfo类的实例和用户Start(),例如
ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
Process.Start(startInfo);
startInfo.Arguments = "www.example.com";
Process.Start(startInfo);
试试吧!
重写代码看起来像这样:
ProcessStartInfo startInfo = new ProcessStartInfo("test.exe");
startInfo.WindowStyle = ProcessWindowStyle.Minimized;
startInfo.WorkingDirectory = "dump";
startInfo.Arguments = "s";
Process.Start(startInfo);