2

我哪里错了?这就像参数甚至没有被执行,它只是打开命令提示符,就是这样。“结果”(StandardOutput)正是您打开新命令提示符时显示的内容......说Microsoft Windows [Version 6.1.7600] 版权所有......然后是命令提示符开始的路径。

无论如何,这是我拥有的代码:

    private static void ExecuteProcess(string processFile, string processArguments)
    {
        ProcessStartInfo psi = new ProcessStartInfo(processFile, processArguments);
        psi.RedirectStandardOutput = true;
        psi.RedirectStandardError = true;
        psi.UseShellExecute = false;
        //psi.CreateNoWindow = true;

        Process p = new Process();
        p.StartInfo = psi;

        try
        {
            Cursor.Current = Cursors.WaitCursor;

            p.Start();

            string output = p.StandardOutput.ReadToEnd();

            p.WaitForExit();

            Cursor.Current = Cursors.Default;

            if (p.ExitCode == 0)
                MessageBox.Show(output, "Results");
            else
                throw new Exception(p.StandardError.ReadToEnd());
        }
        catch (Exception ex)
        {
            Cursor.Current = Cursors.Default;
            MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
        finally
        {
            p.Dispose();
        }
    }

processFile 等于“cmd.exe” processArguments 等于:

csvde -s {servername} -f {filename} -d OU=MyOU,DC=dmz,DC=lan -r "(objectClass=organizationalUnit)" -n

关于为什么“参数”没有被执行的任何帮助都会很棒!

编辑:

到目前为止我发现的一件事,克里斯关于权限的建议是正确的,我需要设置:

psi.Verb = "runas";

但是在执行该进程时,它看起来并没有与该进程关联的用户名,所以我也添加了这一行:

psi.UserName = Environment.UserName;

现在我得到“存根收到错误数据”......

4

2 回答 2

3

文档

命令

启动命令解释器 Cmd.exe 的新实例。不带参数使用,cmd显示Windows XP版本和版权信息。

语法 cmd [[{/c|/k}] [/s] [/q] [/d] [{/a|/u}] [/t:fg] [/e:{on|off}] [ /f:{on|off}] [/v:{on|off}] 字符串] 页首

参数

/c :执行字符串指定的命令,然后停止。

所以你需要:

  1. 将完整路径传递给 EXE 或
  2. 将工作目录设置为包含exe的目录

然后

  1. 制作processFile== "[]csvde.exe",并将其从 中删除processArguments,或
  2. 将“/c \””添加到processArguments.
于 2012-06-29T20:10:34.097 回答
0

我终于重新开始工作,并想出了如何让它发挥作用。

我必须专门设置 Process.ProcessStartInfo 的用户名、密码和域才能执行该进程。

于 2012-11-19T15:15:00.513 回答