我在哪里错了?这就像参数甚至没有被执行,它只是打开命令提示符,就是这样。当您打开一个新的命令提示符时,“结果”(StandardOutput)正好显示出来....说Microsoft Windows [Version 6.1.7600] Copyright ... blah然后是命令提示符的起始路径。< / p>
无论如何,这是我的代码:
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;
现在我收到“存根收到坏数据”......
答案 0 :(得分:3)
来自the docs:
<强> Cmd的强>
启动命令解释程序Cmd.exe的新实例。用过的 没有参数,cmd显示Windows XP版本和版权 信息。
语法cmd [[{/ c | / k}] [/ s] [/ q] [/ d] [{/ a | / u}] [/ t:fg] [/ e:{on | off}] [/ f:{on | off}] [/ v:{on | off}] string]返回页首
<强>参数强>
/ c:执行string指定的命令然后执行 停止。
所以你需要:
然后
processFile
==“[] csvde.exe”,并将其从processArguments
或processArguments
。答案 1 :(得分:0)
我终于回过头来研究这个问题并想出如何让它发挥作用。
我必须专门设置Process.ProcessStartInfo的用户名,密码和域,以便进行处理。