public static string Cmd(string inputStr, ExecCmdMode execCmdMode, string domainName, string useName, string password) { var process = new Process(); process.StartInfo.FileName = "cmd.exe"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.WindowStyle = ProcessWindowStyle.Normal; //process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//does not function, the windows shown or hidden depends on "process.StartInfo.CreateNoWindow" var returnOutput = false; if (execCmdMode == ExecCmdMode.AsyncWindow) { inputStr = "start .\\Resources\\start.bat " + inputStr; process.StartInfo.CreateNoWindow = true; returnOutput = false; } else if (execCmdMode == ExecCmdMode.SyncWindow) { inputStr = "start .\\Resources\\start.bat " + inputStr; process.StartInfo.CreateNoWindow = true; returnOutput = true; } else if (execCmdMode == ExecCmdMode.NoWindow) { process.StartInfo.CreateNoWindow = true; returnOutput = false; } else if (execCmdMode == ExecCmdMode.NoWindowWithOutput) { process.StartInfo.CreateNoWindow = true; returnOutput = true; } else if (execCmdMode == ExecCmdMode.EmptyWindow) { process.StartInfo.CreateNoWindow = false; //when CreateNoWindow = false, popup a empty cmd window, no any exec result appears. returnOutput = false; } else if (execCmdMode == ExecCmdMode.EmptyWindowWithOutput) { process.StartInfo.CreateNoWindow = false; returnOutput = true; } process.StartInfo.Domain = domainName; process.StartInfo.UserName = useName; var pw = new System.Security.SecureString(); foreach (var v in password.ToCharArray()) { pw.AppendChar(v); } process.StartInfo.Password = pw; try { process.Start(); process.StandardInput.WriteLine(inputStr); process.StandardInput.WriteLine("exit"); var outputStr = ""; if (returnOutput) { outputStr = process.StandardOutput.ReadToEnd(); } process.WaitForExit(); process.Close(); return(outputStr); } catch (Exception ex) { throw new ArgumentException("\n>> " + TypeName + ".Cmd Error: " + ex.Message); } }
public static string Cmd(string inputStr, ExecCmdMode execCmdMode) { var process = new Process(); process.StartInfo.FileName = "cmd.exe"; //process.StartInfo.Arguments = args; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.WindowStyle = ProcessWindowStyle.Normal; //process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;//does not function, the windows shown or hidden depends on "process.StartInfo.CreateNoWindow" var returnOutput = false; if (execCmdMode == ExecCmdMode.AsyncWindow) { inputStr = "start .\\Resources\\start.bat " + inputStr; process.StartInfo.CreateNoWindow = true; returnOutput = false; } else if (execCmdMode == ExecCmdMode.SyncWindow) { inputStr = "start .\\Resources\\start.bat " + inputStr; process.StartInfo.CreateNoWindow = true; returnOutput = true; } else if (execCmdMode == ExecCmdMode.NoWindow) { process.StartInfo.CreateNoWindow = true; returnOutput = false; } else if (execCmdMode == ExecCmdMode.NoWindowWithOutput) { process.StartInfo.CreateNoWindow = true; returnOutput = true; } else if (execCmdMode == ExecCmdMode.EmptyWindow) { process.StartInfo.CreateNoWindow = false; //when CreateNoWindow = false, popup a empty cmd window, no any exec result appears. returnOutput = false; } else if (execCmdMode == ExecCmdMode.EmptyWindowWithOutput) { process.StartInfo.CreateNoWindow = false; returnOutput = true; } try { process.Start(); //process.StandardInput.WriteLine("cd " + @"C:\windows\system32"); process.StandardInput.WriteLine(inputStr); process.StandardInput.WriteLine("exit"); var outputStr = ""; if (returnOutput) { outputStr = process.StandardOutput.ReadToEnd();//When use 'start' to start a real new window, the Output is on the new window, not this empty window. so if you want a return output , don't use 'start' } process.WaitForExit(); process.Close(); return(outputStr); } catch (Exception ex) { throw new ArgumentException("\n>> " + TypeName + ".Cmd Error: " + ex.Message); } }