在Windows 10中显示命令提示符的结果

时间:2017-03-30 10:20:40

标签: c# windows windows-10

我正在创建一个应用程序,我必须在Windows 10中启用和禁用UWF。 但我想拦截成功或失败,问题是当我只显示一封信时。

string output = string.Empty;
        string error = string.Empty;


        ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd", "/c uwfmgr.exe volume protect c:");
        processStartInfo.RedirectStandardOutput = true;
        processStartInfo.RedirectStandardError = true;

        processStartInfo.UseShellExecute = false;
        processStartInfo.Verb = "runas";
        Process process = Process.Start(processStartInfo);

        using (StreamReader streamReader = process.StandardOutput)
        {
            output = streamReader.ReadToEnd();
        }

        using (StreamReader streamReader = process.StandardError)
        {
            error = streamReader.ReadToEnd();
        }

        if (!string.IsNullOrEmpty(error))
        {
            MessageBox.Show("Error: " + error);
            return;
        }
        MessageBox.Show("OK: " + output);

此处出现消息框"确定U"

由于

2 个答案:

答案 0 :(得分:0)

感谢您的回复。 我试着阅读这些文章,但鉴于我缺乏经验,我可以应用它所说的内容,你能给我一些额外的帮助吗? 我注意到的是,只有在使用以下代码

时才能启用UWF
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd", "/k uwfmgr.exe volume protect " + cmbBox_Disk.SelectedItem.ToString().Substring(0, 2) + " & exit");
processStartInfo.CreateNoWindow = false;
processStartInfo.WindowStyle = ProcessWindowStyle.Normal;
processStartInfo.UseShellExecute = true;
processStartInfo.Verb = "runas";
Process process = Process.Start(processStartInfo);


processStartInfo = new ProcessStartInfo("cmd", "/k uwfmgr.exe filter enable & exit");
processStartInfo.CreateNoWindow = false;
processStartInfo.WindowStyle = ProcessWindowStyle.Normal;
processStartInfo.UseShellExecute = true;
processStartInfo.Verb = "runas";
process = Process.Start(processStartInfo);

但问题是,如果出现错误,我不能同意用户。

答案 1 :(得分:0)

您可以阅读shell的输出,请参见以下答案:

Process.start: how to get the output?

不幸的是,没有使用进程检测错误的好方法。 最好使用WMI和UWF的WMI提供程序:

请参阅: https://docs.microsoft.com/en-us/windows-hardware/customize/enterprise/uwf-wmi-provider-reference

请确保您已仔细阅读文档。例如,为了保护卷,您需要运行Protect();。在具有“ currentSession = false”的实例上。该实例需要自己创建。 这里有一些小警告。