使用 RedirectStandardOutput 运行 ChkDsk

2024-04-01

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(使用前将#替换为@)

使用 RedirectStandardOutput 运行 ChkDsk 的相关文章

  • OpenCv读/写视频色差

    我试图简单地使用 openCV 打开视频 处理帧并将处理后的帧写入新的视频文件 我的问题是 即使我根本不处理帧 只是打开视频 使用 VideoCapture 读取帧并使用 VideoWriter 将它们写入新文件 输出文件看起来比输入更 绿
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 如何在 Android NDK 中创建新的 NativeWindow 而无需 Android 操作系统源代码?

    我想编译一个 Android OpenGL 控制台应用程序 您可以直接从控制台启动 Android x86 运行 或者从 Android x86 GUI 内的 Android 终端应用程序运行 这个帖子 如何在 Android NDK 中创
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • 如何配置 WebService 返回 ArrayList 而不是 Array?

    我有一个在 jax ws 上实现的 java Web 服务 此 Web 服务返回用户的通用列表 它运行得很好 Stateless name AdminToolSessionEJB RemoteBinding jndiBinding Admi
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 如何将 WPF 大小转换为物理像素?

    将 WPF 与分辨率无关 宽度和高度转换为物理屏幕像素的最佳方法是什么 我正在 WinForms 表单中显示 WPF 内容 通过 ElementHost 并尝试制定一些大小调整逻辑 当操作系统以默认 96 dpi 运行时 我可以正常工作 但
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 如何挤出平面 2D 网格并赋予其深度

    我有一组共面 连接的三角形 即二维网格 现在我需要将其在 z 轴上挤出几个单位 网格由一组顶点定义 渲染器通过与三角形数组匹配来理解这些顶点 网格示例 顶点 0 0 0 10 0 0 10 10 0 0 10 0 所以这里我们有一个二维正方
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • 使用 C# 从 DateTime 获取日期

    愚蠢的问题 给定日期时间中的日期 我知道它是星期二 例如我如何知道它的 tue 2 和 mon 1 等 Thanks 您正在寻找星期几 http msdn microsoft com en us library system datetim
  • WinRT 定时注销

    我正在开发一个 WinRT 应用程序 要求之一是应用程序应具有 定时注销 功能 这意味着在任何屏幕上 如果应用程序空闲了 10 分钟 应用程序应该注销并导航回主屏幕 显然 执行此操作的强力方法是在每个页面的每个网格上连接指针按下事件 并在触
  • 使用 CSharpCodeProvider 类编译 C# 7.3 的 C# 编译器版本是什么?

    我想使用 Microsoft CSharp CSharpCodeProvider 类来编译 C 7 3 代码 编译器版本在 IDictionary 中指定 在创建新的 CSharpCodeProvider 时将其作为输入 例如 Compil
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项

随机推荐

  • 为什么 linter 会选择无用的转义字符?

    转义字符串 模板文字和正则表达式中的非特殊字符没有任何效果 Source https eslint org docs rules no useless escape https eslint org docs rules no useles
  • iOS 启动设置 -> 限制 URL 方案

    我最近发现了一个很棒的iOS5自定义设置URL方案 这可以在这个伟大的website http handleopenurl com scheme apple settings app 我发现这很有效 将用户从我的应用程序引导到 设置 应用程
  • 在 UITableViewController 中处理空 UITableView

    我有一个 UITableViewController 其中填充了一些数据 如果数据返回为空 则显然表是空的 使用什么适当的方法来处理这种情况并放置类似 无可用数据 的 UILabel 之类的内容 我一直在使用 NSString tableV
  • 在 PHP 中嵌入 HTML 中实现内联三元运算符

    我是 PHP 的学习者 我有一个正在实现 HTML5 代码的代码 我想做的是将内联三元运算符嵌入到我的占位符中 我已关注此链接 但没有一个有相同的问题陈述 使用三元运算符放置内联样式php https stackoverflow com q
  • 将参数传递给 WebClient.DownloadFileCompleted 事件

    我正在使用WebClient DownloadFileAsync 方法 并想知道如何将参数传递给WebClient DownloadFileCompleted事件 或任何其他与此相关的事件 并在调用的方法中使用它 我的代码 public c
  • 通过 PHP 发出 HTTPS 请求并获取响应

    我想通过 PHP 向服务器发出 HTTPS 请求并获取响应 与此 ruby 代码类似的东西 http Net HTTP new www example com 443 http use ssl true path uri resp data
  • htaccess 防止热链接也可以防止外部链接

    我在 htaccess 文件中添加了这段代码 以防止图像和 pdf 文件的热链接 但它也会阻止正常的外部链接工作 我的 htaccess 文件 RewriteEngine On RewriteCond HTTP REFERER Rewrit
  • 有没有办法将类字段标记为仅反序列化而不序列化?

    听起来很奇怪 但这正是我想要的 因为我正在使用名为 Project 的数据结构 该数据结构被序列化为保存文件 我希望能够使用已弃用的字段对旧版本的保存文件进行反序列化 然后仅使用当前使用的字段对其进行重新序列化 问题是我想在重新序列化结构时
  • Servlet 3.0 的错误页面

    In the web xml文件中 我尝试指定一个错误页面 如下所示
  • 如何在 Hyper 处理程序之间共享 HashMap?

    我正在尝试通过使用 Hyper 0 10 实现一个简单的内存中 URL 缩短器来学习 Rust 我遇到了一个问题 我认为是由于尝试关闭可变的HashMap在我的处理程序中 fn post mut req Request mut res Re
  • stdin、stdout 和 stderr 是文件吗?

    有人告诉我 每当运行 C 程序时 都会打开三个文件 STDIN STDOUT 和 STDERR 他在支持中给出了此链接 http tldp org LDP abs html io redirection html http tldp org
  • 滤波器相关矩阵 R

    我在尝试从相关矩阵中提取数据时遇到了一些困难 我希望提取高于 0 8 且低于 0 99 的值 因为我想排除恰好为 1 的两只股票的相关性 这是我的代码 Test load the packages library corrr library
  • SQL Server 2008 中单个列上的多个外键约束

    我有两个表 TableA 和 TableB 现在 TableA 有 2 列 ID 和 Name TableB 有 3 列 ID Name 和 TableAID 现在有一个来自 TableA ID TableB TableAID 的外键约束
  • Apple 推送通知提供商的设备令牌

    如果我是 Apple 推送通知 提供商 multipleiOS 应用程序可以对多个应用程序使用相同的设备令牌吗 我知道每个应用程序都需要唯一的 SSL 证书 但是我对设备令牌感到困惑 Example 我有两个应用程序 A 和 B 我想为这两
  • 在使用 OpenSSL 的 EVP_PKEY_keygen 之前,我是否需要播种任何随机数生成器?

    在 OpenSSL Wiki 页面上称为EVP 密钥和参数生成 https wiki openssl org index php EVP Key and Parameter Generation它规定如下 由于这些函数使用随机数 因此您应该
  • NSURLCache 缓存响应问题

    我正在编写一个 iPhone 应用程序 其中一个选项卡是 twitter feed 我正在解析 twitter xml 并将其很好地放入表格视图中 如果没有互联网连接 我想显示上次有互联网连接和更新表时的缓存结果 我使用 NSURLCach
  • C# 此时无法启动异步操作。

    当我单击 asp web 表单中的提交按钮时 我尝试运行我的代码 我一点击按钮就出现错误有人知道原因吗 错误消息显示如下 应用程序中的服务器错误 此时无法启动异步操作 异步 操作只能在异步处理程序中启动 或者 模块或页面生命周期中的某些事件
  • 计算从现在到今天或明天指定时间的秒数[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我以为这个问题已经有了答案 但似乎没有 在Python中 我想计算从 现在 到指定时间 今天 或 明天 的秒数 无论何时发生 例如 下
  • 通过 Facebook 图形 API 发布带有大图片的链接

    虽然过去链接只能包含小 90x90 图片 但现在看来链接可以在 Feed 中包含更大的图片 例如 400x208 如果您将具有大 og image 的链接粘贴到 Facebook UI 上的 更新状态 字段中 例如http allthing
  • 使用 RedirectStandardOutput 运行 ChkDsk

    Running ChkDsk不重定向StandardOutput工作时不会出现这样的错误 var processStartInfo new ProcessStartInfo chkdsk exe D processStartInfo Use