ProcessStartInfo参数

时间:2013-03-16 20:37:31

标签: c# processstartinfo

我有一个过程,需要一些参数。我希望它从C#开始。我在快捷方式中尝试了相同的参数并且它有效。另一方面,在c#中它没有,所以这里是参数。参数格式是正确的,但我在-k

时得到错误的参数错误
ProcessStartInfo prf = new ProcessStartInfo("C:\\" + "argstest.exe");       
prf.UseShellExecute =true;
prf.Arguments = "-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";
Process.Start(prf);

进程启动,但立即关闭,因为应该测试的-k参数不会被发送到程序。 我尝试在-l之前添加一个“”空格但是同样的,也尝试了@“-l ...”

3 个答案:

答案 0 :(得分:1)

尝试在arguments参数中使用verbatim string。像这样:

prf.Arguments = @"-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";

答案 1 :(得分:1)

我测试了你的代码并没有发现任何问题。也许你发现这对追踪你的问题非常有用,我做了这个,你也可以这样做:

您尝试运行的控制台应用,我这样做了:

static void Main(string[] args)
{
    foreach (var arg in args)
    {
        Console.WriteLine(arg);
    }
    Console.ReadLine();
}

从另一个控制台应用中,只需:

static void Main(string[] args)
        {
            ProcessStartInfo prf = new ProcessStartInfo("ConsoleApplication1.exe");
            prf.UseShellExecute = true;
            prf.Arguments = "-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";
            Process.Start(prf);
        }

输出:

-1
http://test.tes1:testa@testb.testing.com:3333/
-k
testing
TYPE=0
USER=1
COUNT=10

这使我相信问题不在Process.Start()方面,而是在你的其他应用程序正在解析参数的方式。至于为什么快捷方式有效而且没有,也许你应该复制/粘贴你正在使用的快捷方式,而不是确定那条快捷方式。

答案 2 :(得分:0)

我发现最适合这种情况的方法是使用围绕命令的转义引用进行设置,如下所示:

string command = "ping -c 4 google.com";

ProcessStartInfo procStartInfo = new ProcessStartInfo("/bin/bash", "-c " + "\"" + command + "\"");