在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;

现在它工作得很好,应该在谷歌上搜索更长时间。。

在process.startinfo.arguments中添加/C开关后,Cmd.exe进程不会隐藏启动

我在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";