2011-08-16 9 views
1

引数 "blah $ 00"(コードの一種)で "prog.exe"と呼ばれるプロセスを実行しようとしていますが、試してみると失敗します。アプリケーションはProcessStartInfoの引数でクラッシュします

string file = "blah $00"; 
string result = string.Empty; 

ProcessStartInfo P = new ProcessStartInfo(@"""" + "prog.exe" + @""""); 
P.Arguments = @"""" + file + @""""; 
P.CreateNoWindow = true; 
P.UseShellExecute = false; 
P.RedirectStandardOutput = true; 
Process.Start(P); 

using (Process process = Process.Start(P)) 
{ 
    using (StreamReader str = process.StandardOutput) 
     result = str.ReadToEnd(); 
} 

MessageBox.Show(result); 

このコードを実行すると、プログラムがクラッシュし、タスクマネージャを使用して強制終了します。

私のコードに何が間違っているのかよくわかりません(引数を正しく設定していませんか?)ので、助けてください。

+4

なぜ二重引用符を使用していますか?コマンドラインの外観を見ましたか? –

+0

'@" "" "' sを使わずに試しましたか? –

+2

なぜprog.exeを引用符で囲む必要がありますか? –

答えて

1

コンソールから与えられた引数でプロセスを実行し、何が起こるかを見てください。結果が期待通りであれば、二重引用符を削除するだけで問題を解決できます。

+0

prog.exeと引数の二重引用符を削除する必要がありますか? – david

+0

確かにprog.exeの場合、あなたの引数がBlahと$ 00なので、引数の代わりに正しいフルパスを指定するだけで、2つの引数を取ることができます。 – Tigran

0

私はあなたのプログラムがクラッシュするとは思わない。単に "prog.exe"が終了するのを待つだけです!私はあなたのプログラムがprog.exeの作業を終えてすぐに実行を続けることを確信し、それを閉じて、本当になくなっていることをタスクマネージャーに確かめてください。

+0

問題は、CPU使用率が100%に上昇し、タスクマネージャを使用して閉じるまでPCがクラッシュすることです。 prog.exeが終了するまでに5秒以上かかることはありません。 – david

+0

どのプログラムがCPUを使用していますか?あなたのプログラムかprog.exe? –

関連する問題