我正在创建一个应用程序,我必须在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"
由于
答案 0 :(得分:0)
感谢您的回复。 我试着阅读这些文章,但鉴于我缺乏经验,我可以应用它所说的内容,你能给我一些额外的帮助吗? 我注意到的是,只有在使用以下代码
时才能启用UWFProcessStartInfo 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”的实例上。该实例需要自己创建。 这里有一些小警告。