jenkins / hudson: Batch-CMD-Fenster sind nicht sichtbar, wenn der Slave als Windows-Dienst ausgeführt wird

4612
Michael Lin

Ich betreibe Jenkins-Slaves als Windows-Dienst, der dann eine Aufrufkette startet (zum Beispiel):

Slave.exe-> ant-> cmd batch-> notepad.exe

Das Problem ist, dass "notepad.exe" nicht sichtbar ist, ich kann es im Task-Manager sehen, aber es zeigt nicht seine Benutzeroberfläche.

Die Windows-Plattform ist Win Server 2008, und ich habe den Dienst "Anmelden als lokales Systemkonto" konfiguriert, wobei "Dienst für die Interaktion mit dem Desktop zulassen" aktiviert ist.

Irgendwelche Ideen dazu? Danke vielmals

1

2 Antworten auf die Frage

1
Harry Johnston

Ab Windows Vista werden alle Dienste in einer separaten Sitzung (Sitzung 0) ausgeführt und können normalerweise nicht direkt mit dem Benutzer interagieren, auch wenn "Dienst für die Interaktion mit dem Desktop zulassen" festgelegt ist. Mit anderen Worten, Sie sollen das nicht tun. Können Sie slave.exe nicht während Ihrer Anmeldesitzung ausführen?

Als Maßnahme zur Verringerung der Abwärtskompatibilität soll Windows jedoch erkennen, dass ein Dienst eine Benutzeroberfläche präsentiert hat, und diese anbieten (auf einem separaten Desktop). Ich bin nicht sicher, warum das nicht funktionieren würde. Ist der Dienst als lokales System konfiguriert?

Vielen Dank für die Antwort. Ja, ich konfiguriere den Dienst als "Use Local System user". Ich kann also nicht den "Windows-Dienst" verwenden, um Jenkins Slave zu starten, oder? Das ist schade, denn es ist sehr praktisch ... Michael Lin vor 12 Jahren 0
Zur späteren Verwendung ist der Interactive Services Detection-Dienst (UI0detect) in Windows 7 und höher nicht standardmäßig für die Ausführung konfiguriert. Bei Bedarf können Sie den Dienst manuell starten oder die Konfiguration so ändern, dass er automatisch startet. Harry Johnston vor 9 Jahren 0
1
brakertech

Ich bin auf ein ähnliches Problem gestoßen und habe versucht, einige automatisierte Skripts für Web-Testskripte zu starten (die eine GUI benötigten).

Das ist der Trick. Sie müssen die Remote-Desktop-Verbindung starten und so einrichten, dass beim Start der Verbindung eine .exe-Datei gestartet wird, Authentifizierungsinformationen eingeben und speichern und die Verbindung auf der Festplatte speichern.

Lassen Sie die gespeicherte RDP-Verbindung von jenkins starten, und es sollte eine GUI für Sie initiiert werden.

Wenn Sie mehrere Windows-Befehle in Jenkins ausführen, müssen Sie jeden Befehl als separate Elemente verwenden (wenn sie einen Exit-Code zurückgeben. Wenn Sie beispielsweise zwei .bat-Dateien aufrufen oder so.)