我正面臨着非常奇怪的行爲,因爲我試圖以編程方式檢測到我的PC上的Java版本。我使用下面的C#代碼:執行「java -version」以編程方式將輸出放在StandardError中而不是StandardOutput
ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd", "/c java -version");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.UseShellExecute = false;
procStartInfo.CreateNoWindow = true;
Process proc = new Process();
proc.StartInfo = procStartInfo;
proc.Start();
// Get the output into a string
output = proc.StandardOutput.ReadToEnd();
if (output == "")
output = proc.StandardError.ReadToEnd();
return output;
這顯示正確的信息,但結果在proc.StandardError.ReadToEnd(實測值),而不是proc.StandardOutput.ReadToEnd()中的任何其它命令(即' java -help')。
更奇怪的是,如果我運行「java -showversion」,它應該同時輸出java版本和幫助信息,我在StandardOutput中獲得幫助信息,版本信息在StandardError中。 這對我沒有意義。
我在2臺Windows 7 x64機器和1臺XP x32上測試了這個。無處不在。這真的很奇怪。
你的實際問題是什麼? – 2012-04-21 09:27:31
@StephenC興奮和分享我猜 – kommradHomer 2012-04-21 09:42:02