我正在尝试使用C:\Windows\System32\chkdsk.exe中的C# Winforms应用程序中的chkdsk.exe系统工具。我想使用System.Diagnostics.Process类。我使用ProcessStartInfo设置工具的文件名,然后使用args属性设置参数。
因此,我尝试在ProcessStartInfo中使用System.Diagnostics.Process。但是,当用户没有权限时出现错误时,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:",我不想使用start an CMD实例并将chkdsk作为参数传递。我只想使用CHKDSK.exe工具
发布于 2019-07-15 19:57:01
要做需要做的事情,您必须重定向正在创建的进程的标准输出和标准错误流,您可以重定向到控制台,也可以重定向到您想要的任何其他内容,例如,您可以在用户界面上的多行文本框中显示来自输出和错误流的文本,或者将其写入日志文件。
有关这方面的一些想法,请参阅此处:https://stackoverflow.com/a/285841/559144
https://stackoverflow.com/questions/57039153
复制相似问题