これは私の心を揺さぶっています。次のコードを使用します。
Process du = new Process();
string cmdPath = System.IO.Path.Combine(Environment.SystemDirectory, "du.exe");
Debug.WriteLine(cmdPath);
ProcessStartInfo info = new ProcessStartInfo(cmdPath);
info.CreateNoWindow = true;
info.Arguments = arguments;
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
du.StartInfo = info;
du.EnableRaisingEvents = true;
du.OutputDataReceived += responseParser;
du.Start();
du.BeginOutputReadLine();
du.WaitForExit();
それを実行すると、次のようになります。
未処理の例外: System.ComponentModel.Win32Exception: 指定されたファイルが見つかりません
cmdPath の出力値はC:\Windows\system32\du.exe
!
そしてもちろん、cmdPath
コマンド プロンプトに の内容を入力するだけで、du.exe が実行され、使用情報が表示されます。
また、コマンド パスを "du.exe" だけに置き換えて、作業ディレクトリに du.exe を配置すると、すべて正常に動作します。しかし、システムの場所にあるものを参照したい。
それで、何が起こっているのですか?私の知る限り、正当なファイル指定子がありますが、なぜそれをProcess.Start()
実行しないのでしょうか? この基本的なコードは、他のいくつかのプログラムも実行しており、それらの出力を取得しています。du.exeはsystem32ディレクトリにあるという点で異なりますが、他のすべては正常に動作します。それはそれと何か関係がありますか?
ありがとう