これのどこが間違っているのですか?引数が実行されていないようで、コマンドプロンプトを開くだけです。「結果」(StandardOutput)は、新しいコマンドプロンプトを開いたときに表示されるものとまったく同じです....Microsoft Windows [Version 6.1.7600] Copyright...と言うと、コマンドプロンプトが開始されるパスです。
とにかく、ここに私が持っているコードがあります:
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
「引数」が実行されない理由についての助けは素晴らしいでしょう!
編集:
私がこれまでに発見したことの1つは、パーミッションに関するChrisの提案は真実であり、設定する必要がありました:
psi.Verb = "runas";
しかし、プロセスを実行すると、プロセスに関連付けられたユーザー名がないように見えたので、次の行も追加しました。
psi.UserName = Environment.UserName;
今、私は「スタブが悪いデータを受け取りました」を取得しています...