Windows 8 でアプリを実行すると、2 つの奇妙な問題が発生します (Windows 7 では正常に動作します)。
外部の「a.exe」アプリを実行しています。
最初の問題は、プロセスを使用して「a.exe」を実行すると、出力が得られないことです。「a.exe」を実行して出力をファイルに書き込むバッチファイルを実行すると、出力があります。
2 番目の問題は、両方の場合 (バッチとプロセス) で "a.exe" が失敗することです。しかし、コマンドラインからは機能します。
コードは次のとおりです。
proc = new Process();
proc.StartInfo.FileName = Path;
proc.StartInfo.Arguments = args;
proc.StartInfo.WorkingDirectory = GetDirectoryName(Path);
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.Verb = "runas administrator";
proc.OutputDataReceived += (sendingProcess, line) =>
{
string s = line.Data;
if (!string.IsNullOrWhiteSpace(s))
{
_sbStdout.AppendLine(line.Data);
}
};
proc.ErrorDataReceived += (sendingProcess, line) =>
{
string s = line.Data;
if (!string.IsNullOrWhiteSpace(s))
{
_sbStderr.AppendLine(line.Data);
}
};
proc.Start();
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
// Wait for exit or timeout
bool res = true;
if (timeout <= 0 || timeout == null)
proc.WaitForExit();
else
res = proc.WaitForExit((int)timeout);
ExitCode = proc.ExitCode;
なにが問題ですか?