Service legt nach dem Aufruf von batch file @ bei WaitForExit a

Ich habe einen Dienst, der manchmal eine Batch-Datei aufruft. Die Ausführung der Batch-Datei dauert 5-10 Sekunden:

System.Diagnostics.Process proc = new System.Diagnostics.Process(); // Declare New Process
    proc.StartInfo.FileName = fileName;
    proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
    proc.StartInfo.CreateNoWindow = true;
    proc.Start();
    proc.WaitForExit();

Die Datei existiert und der Code funktioniert, wenn ich denselben Code in der Konsole ausführe. Wenn es jedoch innerhalb des Dienstes ausgeführt wird, legt es bei @ auWaitForExit(). Ich muss die Batchdatei aus dem Prozess entfernen, um fortzufahren. (Ich bin sicher, dass die Datei existiert, wie ich in der Prozessliste sehen kann.)

Wie kann ich dieses Problem beheben?

Update # 1:

Kevins Code ermöglicht mir die Ausgabe. Eine meiner Batch-Dateien hängt noch.

"C: \ EnterpriseDB \ Postgres \ 8.3 \ bin \ pg_dump.exe" -i -h localhost -p 5432 -U postgres -Fp -a -D -v -f "c: \ backupcasecocher \ backupdateevent2008.sql" - t "" public "." dateevent "" DbTest "

Die andere Batch-Datei lautet:

"C: \ EnterpriseDB \ Postgres \ 8.3 \ bin \ vacuumdb.exe" -U postgres -d DbTest

Ich habe den Pfad und das @ überprüpostgresql Pfad ist in Ordnung. Das Ausgabeverzeichnis existiert und funktioniert immer noch außerhalb des Dienstes. Irgendwelche Ideen

Update # 2:

nstelle des Pfads der Batch-Datei habe ich die Datei "C: \ EnterpriseDB \ Postgres \ 8.3 \ bin \ pg_dump.exe" für die Datei "@" geschriebeproc.StartInfo.FileName und fügte alle Parameter zu @ hinproc.StartInfo.Arguments. Die Ergebnisse sind unverändert, aber ich sehe daspg_dump.exe im Prozessfenster. Dies geschieht wiederum nur innerhalb des Dienstes.

Update # 3:

Ich habe den Dienst mit einem Benutzer in der Administratorgruppe ohne Erfolg ausgeführt. Ich habe @ restaurienull für den Benutzernamen und das Passwort des Dienstes

Update # 4:

Ich habe einen einfachen Dienst erstellt, um eine Ablaufverfolgung in das Ereignisprotokoll zu schreiben und eine Batchdatei auszuführen, die "dir" enthält. Es wird jetzt bei @ hängproc.Start(); - Ich habe versucht, das Konto von LocalSystem auf @ zu änderBenutze und ich habe den Administrator Benutzer und das Passwort eingestellt, immer noch nichts.

Antworten auf die Frage(16)

Ihre Antwort auf die Frage