执行 "systeminfo" cmd 命令 WaitForExit 不会继续
Executing "systeminfo" cmd command WaitForExit doesn't continue
我尝试执行 systeminfo cmd 命令,但遇到问题。我的问题是,当涉及到方法 WaitForExit() 时,程序不会继续。我试试
using (var cmd = new Process())
{
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = false;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("systeminfo");
cmd.StandardInput.Flush();
cmd.WaitForExit();
var result = cmd.StandardOutput.ReadToEnd();
cmd.StandardInput.Close();
cmd.StandardOutput.Close();
return result;
}
您可以尝试以下选项:
选项 1:
订阅 Process.Exited 事件,当 systeminfo 进程退出时,读取流以获取进程的结果。
选项 2:
将 systeminfo 进程输出重定向到文本文件。当进程存在事件发生时,从文本文件中读取结果。
也代替了cmd.StandardInput.WriteLine("systeminfo");将 systeminfo 进程作为参数传递。它将为您提供更多控制权。
例如:cmd.StartInfo.Arguments = "/C systeminfo.exe";
您必须向 cmd 添加命令,cmd 运行 和 return 结果并退出。
使用像 "cmd /c ver" 这样的命令可以正常工作,并且 return windows 版本。
你在这里经历 cmd
有什么特别的原因吗?这在这里完全没有必要,也解释了你的问题。你 运行 一个 cmd
的交互式实例,假装你输入了 systeminfo
然后等待 cmd
退出。就像普通的交互式实例一样,它不会那样做。它只会坐在那里,等待更多命令。相反,为什么不直接调用 systeminfo
?
using (var systeminfo= new Process
{
FileName = "systeminfo",
RedirectStandardOutput = true,
CreateNoWindow = false,
UseShellExecute = false,
})
{
systeminfo.Start();
var result = systeminfo.StandardOutput.ReadToEnd();
systeminfo.WaitForExit();
return result;
}
我尝试执行 systeminfo cmd 命令,但遇到问题。我的问题是,当涉及到方法 WaitForExit() 时,程序不会继续。我试试
using (var cmd = new Process())
{
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.RedirectStandardInput = true;
cmd.StartInfo.RedirectStandardOutput = true;
cmd.StartInfo.CreateNoWindow = false;
cmd.StartInfo.UseShellExecute = false;
cmd.Start();
cmd.StandardInput.WriteLine("systeminfo");
cmd.StandardInput.Flush();
cmd.WaitForExit();
var result = cmd.StandardOutput.ReadToEnd();
cmd.StandardInput.Close();
cmd.StandardOutput.Close();
return result;
}
您可以尝试以下选项:
选项 1: 订阅 Process.Exited 事件,当 systeminfo 进程退出时,读取流以获取进程的结果。
选项 2: 将 systeminfo 进程输出重定向到文本文件。当进程存在事件发生时,从文本文件中读取结果。
也代替了cmd.StandardInput.WriteLine("systeminfo");将 systeminfo 进程作为参数传递。它将为您提供更多控制权。 例如:cmd.StartInfo.Arguments = "/C systeminfo.exe";
您必须向 cmd 添加命令,cmd 运行 和 return 结果并退出。 使用像 "cmd /c ver" 这样的命令可以正常工作,并且 return windows 版本。
你在这里经历 cmd
有什么特别的原因吗?这在这里完全没有必要,也解释了你的问题。你 运行 一个 cmd
的交互式实例,假装你输入了 systeminfo
然后等待 cmd
退出。就像普通的交互式实例一样,它不会那样做。它只会坐在那里,等待更多命令。相反,为什么不直接调用 systeminfo
?
using (var systeminfo= new Process
{
FileName = "systeminfo",
RedirectStandardOutput = true,
CreateNoWindow = false,
UseShellExecute = false,
})
{
systeminfo.Start();
var result = systeminfo.StandardOutput.ReadToEnd();
systeminfo.WaitForExit();
return result;
}