.NETのProcessStartInfoクラスのインとアウトを理解するのに問題があります。私はこのクラスをFFmpegのような.exeプログラムを問題なく実行するために使用します。
しかし、ProcessStartInfoを使用して、それだけを含む単純なfoo.cmdのような.cmdプログラムを開始すると、@echo Hello world
何も出力されません。
ProcessStartInfo oInfo = new ProcessStartInfo(@"C:\Program Files (x86)\itms\foo.cmd")
{
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
CreateNoWindow = true
};
using (Process p = new Process())
{
p.StartInfo = oInfo;
p.OutputDataReceived += new DataReceivedEventHandler(transporter_OutputDataReceived);
p.Start();
p.BeginOutputReadLine();
p.WaitForExit();
}
private void transporter_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Response.Write(e.Data + " - line<br/>");
}
たくさんの例を見てきました。人々はcmd.exeを使用して.cmdプログラムを開始し、これを試しましたが、成功しませんでした。プログラムは無期限にロードを続けます。
ProcessStartInfo oInfo = new ProcessStartInfo("cmd", "/c start foo.cmd")
{
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
CreateNoWindow = true,
WorkingDirectory = @"C:\Program Files (x86)\itms"
};
WindowsおよびMacでコマンドラインツールを使用すると、foo.cmdプログラムが正常に機能して出力されます。
誰かが私のためにこれをわかりやすく説明してくれませんか。
ありがとう
編集
ローカルで実行すると、コードは正しく動作します。ウェブサイトでコードを実行すると問題が発生します。プログラムの実行が許可されていないか、出力が何らかの理由で無効になっています。
cmd.exeのみが出力「cmd」を返します。「/cdir」は、たとえば現在のフォルダの内容に関する情報を返します。
これは実際には許可の問題でしょうか?