Запуск процесса в фоновом режиме в фоновом режиме без какого-либо окна

#c# #process #netsh

#c# #процесс #netsh

Вопрос:

Я хочу запустить команду NETSH в автоматическом режиме (без окна). Я написал этот код, но он не работает.

 public static bool ExecuteApplication(string Address, string workingDir, string arguments, bool showWindow)
{
    Process proc = new Process();
    proc.StartInfo.FileName = Address;
    proc.StartInfo.WorkingDirectory = workingDir;
    proc.StartInfo.Arguments = arguments;
    proc.StartInfo.CreateNoWindow = showWindow;
    return proc.Start();
}

string cmd= "interface set interface name=""   InterfaceName "" admin=enable";
ExecuteApplication("netsh.exe","",cmd, false);
  

Комментарии:

1. Ну, вы переходите false на CreateNoWindow … итак, вы попросили его создать окно.

Ответ №1:

Вот как я это делаю в своем проекте:

 ProcessStartInfo psi = new ProcessStartInfo();            
psi.FileName = "netsh";            
psi.UseShellExecute = false;
psi.RedirectStandardError = true;
psi.RedirectStandardOutput = true;
psi.Arguments = "SOME_ARGUMENTS";

Process proc = Process.Start(psi);                
proc.WaitForExit();
string errorOutput = proc.StandardError.ReadToEnd();
string standardOutput = proc.StandardOutput.ReadToEnd();
if (proc.ExitCode != 0)
    throw new Exception("netsh exit code: "   proc.ExitCode.ToString()   " "   (!string.IsNullOrEmpty(errorOutput) ? " "   errorOutput : "")   " "   (!string.IsNullOrEmpty(standardOutput) ? " "   standardOutput : ""));
  

Он также учитывает выходные данные команды.

Ответ №2:

Выполнить выполнение пользовательской оболочки false

 proc.StartInfo.UseShellExecute = false;
  

и передать true в showWindow параметре

 ExecuteApplication("netsh.exe","",cmd, true);
  

Комментарии:

1. Также было бы полезно изменить поведение внутри ExecuteApplication . В showWindow настоящее время параметр выполняет прямо противоположное тому, что указывает его имя.