0

いくつかの引数を取るプロセスがあります。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 ..." も試しました

4

3 に答える 3

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() 側にあるのではなく、他のアプリが引数を解析している方法にあると私が信じている理由です。ショートカットが機能し、これが機能しない理由については、使用しているショートカットをコピー/貼り付けする必要がありますが、そのショートカットについてはよくわかりません。

于 2013-03-16T21:49:34.540 に答える
1

引数パラメーターでそのままの文字列を使用してみてください。このような:

prf.Arguments = @"-l http://test.tes1:testa@testb.testing.com:3333/ -k testing TYPE=0 USER=1 COUNT=10";
于 2013-03-16T21:15:21.083 に答える
0

これに最適な方法は、次のように、コマンドの周りにエスケープされた引用符を設定することです。

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

ProcessStartInfo procStartInfo = new ProcessStartInfo("/bin/bash", "-c " + "\"" + command + "\"");
于 2014-12-31T01:10:16.277 に答える