[英]Does Process.StartInfo.Arguments support a UTF-8 string?
[英]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.