Процесс Cmd.exe не запускается скрытым после добавления ключа / C в process.startinfo.arguments - PullRequest
1 голос
/ 29 марта 2012

Я пытаюсь запустить скрытую командную строку при запросе списка 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;

Теперь все работает отлично, надо было погуглить немного дольше ..

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Другой вариант - просто позвонить wmic.exe напрямую:

ps.Filename = "wmic.exe";
ps.Arguments = "qfe list full";
2 голосов
/ 29 марта 2012

У меня была такая же проблема при попытке использовать / c в cmd.Вы должны использовать:

    ps.CreateNoWindow = true; 

Без команды / c

    ps.WindowStyle = ProcessWindowStyle.Hidden;  

Та же проблема с ключом / k.

С уважением

2 голосов
/ 29 марта 2012

Если wmic - приложение, вам не нужно запускать процесс cmd.exe. Но вместо этого запустите wmic процесс.

Привет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...