- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在不重定向 StandardOutput
的情况下运行 ChkDsk
不会出现如下错误:
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
为 0
。
不要担心 IsHidden
的东西,那只是我的方法的额外天赋,我不想起飞。
关于c# - 使用 RedirectStandardOutput 运行 ChkDsk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20076929/
好的,这是我用来测试 RedirectStandardOutput 的一个简单的控制台应用程序的Process.StartInfo . foreach (c In [Enum].GetValu
背景 我正在为 node.js 应用程序编写一个 c# 包装器。在这个包装器中,我通过 Process.RedirectStandardOutput 连续读取标准输出。在类 ProcessManage
在我的 C# 代码中,我必须运行一些外部进程。这些可以是批处理文件或可执行文件。通过使 ProcessStartInfo 的 RedirectStandardOutput 为真,我将输出重定向到我自己
我在重定向应用程序的标准输出时遇到问题。这似乎是 .NET 中的某种错误。 我在跑 Live555ProxyServer但是即使启动的控制台确实有书面输出,我也没有得到任何输出。此代码适用于任何其他控
我有一个应用程序在命令窗口中调用另一个进程,并且该进程更新了输出到控制台窗口的统计信息。我认为这是一个相当简单的操作,但我似乎无法让它工作。我错过了什么吗? string assemblyLocati
在不重定向 StandardOutput 的情况下运行 ChkDsk 不会出现如下错误: var processStartInfo = new ProcessStartInfo(@"chkdsk.ex
我正在尝试使用 StreamReader 从进程读取输出数据,但 StreamReader 阻塞并且不会返回任何输出。 我的流程是这样的: ProcessStartInfo startInfo = n
我想要的只是将一个进程的标准输出重定向到一个文件。听起来很简单,但我尝试的一切都不起作用: 将 DOS 风格的重定向放在参数列表中(例如 param1 param2 > output.txt)不起作用
我们有一个服务,它启动一个进程并在服务停止时等待进程退出/服务用户调用停止(停止/终止服务启动的进程)。 偶尔,process.waitForExit(TimeSpan)挂起。 请注意,由 Servi
在控制台模式下运行应用程序时,会有一些行写入控制台。 现在我想以编程方式执行此操作。这是我使用的一些示例代码:MSDN on OutputDataReceived Event private stat
在我正在执行的 PowerShell 窗口中: Start-Process XXXXX.exe -ArgumentList "some valid arguments" -wait -redirect
我有一个 GUI 应用程序(在新进程中)执行“控制台”应用程序并解析输出。要重定向输出,我将 pConsole.StartInfo.RedirectStandardOutput 设置为 true。我还
我是一名优秀的程序员,十分优秀!