Running ChkDsk
不重定向StandardOutput
工作时不会出现这样的错误:
var processStartInfo = new ProcessStartInfo(@"chkdsk.exe", "D:");
processStartInfo.UseShellExecute = false;
var process = Process.Start(processStartInfo);
process.WaitForExit();
if (process.ExitCode != 0)
throw new Exception("did not work");
重定向 StandardOutput 时,该过程以以下内容结束ExitCode 3
.
var processStartInfo = new ProcessStartInfo(@"chkdsk.exe", "D:");
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
var process = Process.Start(processStartInfo);
process.WaitForExit();
if (process.ExitCode != 0)
throw new Exception("did not work");
做同样的事情,例如net use 和重定向的 StandardOutput 可以正常工作,不会出现错误
var processStartInfo = new ProcessStartInfo(@"net ", "use");
为什么?怎么能chkdsk
被处决并且StandardOutput
被重定向?
环境:Win 7 Pro x64、UAC 禁用、以管理员身份登录、Dot Net 4.0、VS 2012、WPF 应用程序
我刚刚运行了这段代码,没有任何问题,退出代码为0
.
var cd = RunProcessDirect("chkdsk.exe", "c:", false);
protected ConsoleData RunProcessDirect(string processPath, string args,
bool isHidden)
{
Process process = SetupProcess(processPath, args, isHidden);
process.Start();
ConsoleData data = new ConsoleData();
data.StandardOutput = process.StandardOutput.ReadToEnd();
data.StandardError = process.StandardError.ReadToEnd();
data.ExitCode = process.ExitCode;
return data;
}
private Process SetupProcess(string processPath, string args,
bool isHidden)
{
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.WindowStyle = isHidden
? ProcessWindowStyle.Hidden
: ProcessWindowStyle.Normal;
startInfo.CreateNoWindow = isHidden;
startInfo.FileName = processPath;
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
process.StartInfo = startInfo;
return process;
}
public class ConsoleData
{
public string StandardOutput { get; set; }
public string StandardError { get; set; }
public int ExitCode { get; set; }
}
cd.StandardOutput
包含程序的所有文本输出,cd.StandardError
是空的,并且cd.ExitCode
is 0
.
不用担心IsHidden
东西,这只是我的方法的额外天赋,我不想起飞。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)