繁体   English   中英

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

[英]Cmd.exe process does not launch hidden after adding /C switch in process.startinfo.arguments

查询包含我已安装的知识库文章的wmic qfe列表时,我尝试启动隐藏的命令提示符。

我从命令提示符处启动命令“ wmic qfe list full”,这将为我获取列表。

当我从C#应用程序内部执行此操作时,为了使我从cmd.exe执行的进程在命令完成后停止,我使用/ 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;

现在它可以正常工作了,应该用Google搜索更长的时间。

如果wmic是应用程序,则不必启动cmd.exe进程。 但是请改为启动Wmic进程。

问候

另一个选择是直接调用wmic.exe

ps.Filename = "wmic.exe";
ps.Arguments = "qfe list full";

尝试在cmd中使用/ c时,我也遇到了同样的问题。 您必须使用:

    ps.CreateNoWindow = true; 

如果没有/ c命令,

    ps.WindowStyle = ProcessWindowStyle.Hidden;  

/ k开关也存在同样的问题。

问候

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM