【发布时间】:2021-08-27 15:53:58
【问题描述】:
我正在创建一个将 Windows Server 版本从标准评估版更改为标准版的 C# 应用程序。我正在尝试获取 CMD 命令的输出,但是当 DISM 命令完成时,它会询问您是否要重新启动计算机并且您需要输入“y”或“n”。我尝试通过在命令之前传递“echo n |”并使用 process.StandardInput.Write 来做到这一点,但这些都不起作用。该功能与其他不需要用户输入的命令完美配合。你知道我在做什么错吗?谢谢
public static string get_cmd_output(string cmd)
{
System.Diagnostics.Process process = new System.Diagnostics.Process();
process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.Arguments = "/C echo n | " + cmd;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.RedirectStandardOutput = true;
process.Start();
string q = "";
while (!process.HasExited)
q += process.StandardOutput.ReadToEnd();
return q;
}
get_cmd_output("DISM /Online /Set-Edition:ServerStandard /ProductKey:" + key + " /AcceptEula");
【问题讨论】:
-
您是否尝试过将
/NoRestart作为参数之一传递? -
尝试在“Y\n”或“N\n”之后添加回车
标签: c# cmd process activation