Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }