我想在控制台中读取表单中的进程输出(标准输出与一个流中的标准错误混合).有办法怎么做?
我正在考虑使用
ProcessStartInfo.UseShellExecute = true;
Run Code Online (Sandbox Code Playgroud)
但后来我无法异步读取输出.如果我订
process.ProcessStartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += new DataReceivedEventHandler(partialOutputHandler);
Run Code Online (Sandbox Code Playgroud)
然后我可以读标准输出(我可以做同样的标准错误)但我不知道如何模拟控制台的行为(混合stdout和stderr).
注意:我知道Linux具有将标准错误流重定向到标准输出流的功能,但我无法将其用于.NET.
我必须错过一些非常简单的事情
谢谢!
我正在尝试使用以下代码运行cmd命令:
ProcessStartInfo cmd = new ProcessStartInfo("cmd.exe");
cmd.RedirectStandardInput = true;
cmd.RedirectStandardOutput = true;
cmd.RedirectStandardError = true;
cmd.UseShellExecute = false;
cmd.CreateNoWindow = true;
cmd.WindowStyle = ProcessWindowStyle.Hidden;
Process exec = Process.Start(cmd);
exec.StandardInput.WriteLine("sc create \"BaliService\" binPath= \"{0}\\BaliService.exe\"", Directory.GetCurrentDirectory());
Run Code Online (Sandbox Code Playgroud)
此命令需要管理员privelages,如果我以管理员身份运行cmd并键入命令它完美运行但不是当我以管理员身份运行此应用程序时.我已经添加了
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
每次打开exe时提示uac的清单文件.
我已经看到了关于这个的多个问题,他们似乎都建议在提升的应用程序下运行的任何进程都具有相同的权限,但这对我不起作用.
我试过cmd.Verb = "runas";但没有骰子.