从我的C#应用程序运行PsList.exe并获得其输出的正确方法(或者为什么我的代码不起作用)
本文关键字:我的 方法 或者 为什么 不起作用 代码 PsList 运行 应用程序 exe 输出 | 更新日期: 2023-09-27 18:00:40
为什么这段代码只显示cmd窗口而从未到达末尾?我想把PsList的输出放到我的C#应用程序中。执行在以下行停止:"int exitCode=proc.exitCode;"
private static void PsList()
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = @"C:'PsList.exe";
start.WindowStyle = ProcessWindowStyle.Hidden;
start.CreateNoWindow = true;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process proc = Process.Start(start))
{
proc.WaitForExit(4000);
int exitCode = proc.ExitCode;
string exitMsg = proc.StandardOutput.ReadToEnd();
}
}
您可以尝试重新排列一下:
using (Process proc = Process.Start(start))
{
string exitMsg = proc.StandardOutput.ReadToEnd();
proc.WaitForExit(4000);
int exitCode = proc.ExitCode;
}
有许多相关的问题,例如如何从Process获取日志。重定向输出时启动和ResGen.exe停滞
取决于执行在proc上的停止方式。ExitCode行,可能是在访问ExitCode属性时进程尚未完成,然后它将抛出InvalidOperationException。
在这种情况下,您可以检查进程是否已经使用proc退出。在尝试访问ExitCode属性之前已退出