在process.startinfo.arguments中添加/C开关后,Cmd.exe进程不会隐藏启动
本文关键字:exe Cmd 进程 启动 隐藏 开关 arguments startinfo process 添加 | 更新日期: 2023-09-27 18:29:24
我试图在查询包含我安装的KB文章的wmic-qfe列表时启动隐藏的命令提示符。
我从命令提示符中启动命令"wmicqfe-list-full",这将获得列表。
当我在我的C#应用程序中这样做时,为了让我的进程从cmd执行。命令完成后,我使用/c开关作为参数。但是,由于添加了此开关,我无法再隐藏cmd.exe的启动。
它弹出并执行代码,正如它应该做的那样,它在执行命令后关闭自己,并将信息传输到我的应用程序。
但我无法隐藏它。任何关于在参数中使用/c开关隐藏它或在命令行执行后停止它而不使用/c交换机的建议。
这是我的代码:
private void btn_Click(object sender, EventArgs e)
{
string fileName = @"cmd.exe";
Process p = new Process();
ProcessStartInfo ps = new ProcessStartInfo();
ps.Arguments = " /c wmic qfe list full";
ps.FileName = fileName;
ps.UseShellExecute = false;
ps.WindowStyle = ProcessWindowStyle.Hidden;
ps.RedirectStandardInput = true;
ps.RedirectStandardOutput = true;
ps.RedirectStandardError = true;
p.StartInfo = ps;
p.Start();
StreamReader srrOutput = p.StandardOutput;
this.textBox1.Text = srrOutput.ReadToEnd();
}
找到了,显然添加/C开关也需要我添加:
ps.CreateNoWindow = true;
现在它工作得很好,应该在谷歌上搜索更长时间。。
我在cmd中尝试使用/c时也遇到了同样的问题。你必须使用:
ps.CreateNoWindow = true;
如果没有/c命令,
ps.WindowStyle = ProcessWindowStyle.Hidden;
/k开关也有同样的问题。
问候
如果wmic是一个应用程序,则不必启动cmd.exe进程。但请启动wmic进程。
问候
另一个选项是直接调用wmic.exe
:
ps.Filename = "wmic.exe";
ps.Arguments = "qfe list full";