如何使用C#中的CHKDSK工具并在CMD窗口中显示文本?

时间:2019-07-15 11:51:41

标签: c# .net windows winforms cmd

我正在尝试使用C#Winforms应用程序在chkdsk.exe中找到的C:\Windows\System32\chkdsk.exe系统工具。我想使用System.Diagnostics.Process类。我正在使用ProcessStartInfo设置工具的文件名,然后使用args属性设置参数。

因此,我尝试将System.Diagnostics.ProcessProcessStartInfo一起使用。但是,当用户没有权限时发生错误时,chkdsk窗口将立即关闭。因此,我在任务栏中看到了片刻的窗口,然后关闭而没有说什么。我已经尝试过UseShellExecute=truefalse。另外,我尝试重定向输出流,但是在Windows应用程序中,如果输出流失败,则必须直接显示输出流,而不是显示错误或CHKDSK信息的CMD窗口。


 using (Process CHKDSK = new Process())
 {
     CHKDSK.StartInfo.WorkingDirectory = @"H:\";
     CHKDSK.StartInfo.FileName = "C:\\Windows\\System32\\chkdsk.exe";
     CHKDSK.StartInfo.Arguments = "/r /f C:";

     CHKDSK.StartInfo.UseShellExecute = true;
     //CHKDSK.StartInfo.UseShellExecute = false;       

     CHKDSK.Start();                
 }

我希望CHKDSK文本显示在我相信的CMD窗口中。因此,如果用户没有权限,则该窗口应告知用户他们不具有使用CMD窗口并键入"call chkdsk /r /f C:"的权限,我不想使用启动CMD实例并传递{{1 }}作为参数。我只想使用CHKDSK.exe工具

1 个答案:

答案 0 :(得分:2)

要执行所需的操作,必须重定向标准输出以及正在创建的过程的标准错误流,您可以重定向到控制台或其他任何想要的东西,例如,您可以显示来自用户界面上的多行文本框中显示输出和错误流,或者将其写入日志文件。

有关此方面的一些想法,请参见此处:https://stackoverflow.com/a/285841/559144

相关问题