我正在尝试使用C#Winforms应用程序在chkdsk.exe
中找到的C:\Windows\System32\chkdsk.exe
系统工具。我想使用System.Diagnostics.Process类。我正在使用ProcessStartInfo设置工具的文件名,然后使用args属性设置参数。
因此,我尝试将System.Diagnostics.Process
与ProcessStartInfo
一起使用。但是,当用户没有权限时发生错误时,chkdsk
窗口将立即关闭。因此,我在任务栏中看到了片刻的窗口,然后关闭而没有说什么。我已经尝试过UseShellExecute=true
和false
。另外,我尝试重定向输出流,但是在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工具
答案 0 :(得分:2)
要执行所需的操作,必须重定向标准输出以及正在创建的过程的标准错误流,您可以重定向到控制台或其他任何想要的东西,例如,您可以显示来自用户界面上的多行文本框中显示输出和错误流,或者将其写入日志文件。
有关此方面的一些想法,请参见此处:https://stackoverflow.com/a/285841/559144