UPDATE ** SUCHE NOCH EINE RICHTIGE ANTWORT ** Ich habe den folgenden Code in meinem Windows-Dienst und ich möchte eine Batch-Datei ausführen. Ich möchte das Eingabeaufforderungsfenster hoch, damit ich den Fortschritt sehen kann
Hier ist mein Code, aber mein Batch-Dateicode funktioniert nicht
%Vor%Die Batch-Datei wird nicht ausgeführt. Ich bin ein Neuling in .net und C # und ich bin mir nicht sicher, was ich von hier aus tun soll. Danke
Wie wird die Konsolenanwendung vom Windows-Dienst ausgeführt?
Sie wollen die p.StartInfo mit FileName="cmd.exe" und Argumente="c: \\ thebatfile.bat" ich glaube
setzen Das Problem ist, dass Sie UseShellExecute
als false haben, aber Sie geben den Namen einer ausführbaren Datei nicht weiter.
Wenn ShellExecute
verwendet wird, ähnelt es einem Doppelklick auf eine Datei im Explorer - es weiß, dass .doc-Dateien mit Word geöffnet werden müssen und dass .bat-Dateien mit cmd.exe
geöffnet werden müssen. Wenn Sie dies deaktiviert haben, kennt es jedoch keines dieser Dinge und Sie müssen eine ausführbare Datei übergeben, damit alles erfolgreich ausgeführt werden kann.
Wenn Sie RedirectStandardOutput
auf "true" setzen, müssen Sie stattdessen die Batch-Datei über cmd.exe
ausführen, indem Sie FileName
auf cmd.exe
und die Argumente auf /C "c:\myFile.bat"
:
Es sieht so aus, als ob es das Batch-Script ausführt, wenn der Service zum ersten Mal ausgeführt wird und dann beendet wird ( p.WaitForExit();
), bevor die anderen Funktionen die Fähigkeit erhalten, aufgerufen zu werden. Ist das das beabsichtigte Verhalten? Das würde erklären, warum Sie sehen, dass es die Ordneroperationen ausführt und nicht sieht, dass das Skript ausgeführt wird.
Versuchen Sie diesen Code, um das Konsolenfenster aufzurufen. Es sollte Ihnen eine Vorstellung davon geben, wann das Batch-Skript ausgeführt wird.
%Vor%Windows-Dienste werden unter einem Desktop-Benutzerkonto ausgeführt. Um das cmd-Fenster anzuzeigen, müssen Sie die Identität des aktuell angemeldeten Benutzers annehmen und das cmd-Fenster auf dem Desktop dieses Benutzers starten. Siehe dies:
Tags und Links .net c# visual-studio-2010 windows-services c#-4.0