/// <summary> /// Runs a program in a hidden window. /// </summary> /// <param name="executable">Path to program you want to run</param> /// <param name="args">Arguments for the application</param> /// <param name="session">Include a session if you want the output logged</param> /// <returns></returns> public static bool TryRunCommandHidden(string executable, string args, Session session = null) { var output = new StringBuilder(); var error = new StringBuilder(); try { using (var process = new Process()) { process.StartInfo.FileName = executable; if (!String.IsNullOrWhiteSpace(args)) { process.StartInfo.Arguments = args; } process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.CreateNoWindow = true; process.StartInfo.UseShellExecute = false; process.OutputDataReceived += (sender, e) => output.Append(e.Data); process.ErrorDataReceived += (sender, e) => error.Append(e.Data); process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); if (!process.SuccessfulExit()) { return false; } } return true; } catch { return false; } finally { var standardOutput = output.ToString(); var errorOutput = error.ToString(); if (session != null) { if (!String.IsNullOrWhiteSpace(standardOutput)) { session.Log("Output:"); session.Log(standardOutput); } if (!String.IsNullOrWhiteSpace(errorOutput)) { session.Log("Errors:"); session.Log(errorOutput); } } } }
public static bool TryRunCommand(string executable, string args, bool useShellExecute = false) { try { using (var process = new Process()) { process.StartInfo.FileName = executable; if (!String.IsNullOrWhiteSpace(args)) { process.StartInfo.Arguments = args; } process.StartInfo.UseShellExecute = useShellExecute; process.Start(); process.WaitForExit(); if (!process.SuccessfulExit()) { return false; } } return true; } catch { return false; } }