我哪里错了?这就像参数甚至没有被执行,它只是打开命令提示符,就是这样。“结果”(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;
现在我得到“存根收到错误数据”......