Um eine Anwendung ausführen zu können, muss eine Batchdatei gestartet werden (was beispielsweise den Start von Jetty, das Anzeigen von Live-Protokollen usw.) ermöglicht. Die Anwendung funktioniert nur, wenn diese Batchdatei ausgeführt wird. Ich bin daher gezwungen, diese Batchdatei auszuführen und nicht vom Windows-Server abzumelden.
Kann diese Batchdatei als Dienst ausgeführt werden? Ich experimentiere mit einem der Vorschläge aus einer ähnlichen Frage .
NSSM ist völlig kostenlos und extrem einfach. Der Befehl Eingabeaufforderung/Terminal wird als Administrator ausgeführt:
nssm install "YourCoolServiceNameLabel"
daraufhin wird ein Dialogfeld angezeigt, in dem Sie auswählen können, wo sich die Datei befindet, die Sie ausführen möchten.
deinstallieren
nssm remove "YourCoolServiceNameLabel"
Warum nicht einfach als geplante Task einrichten, die beim Start geplant ist?
Dazu gibt es ein eingebautes Windows-Kommando: sc create . Nicht so schick wie nssm, aber Sie müssen keine zusätzliche Software herunterladen.
sc create "ServiceName" start= demand displayname= "DisplayName" binpath= [path to .bat file]
Hinweis
=
erforderlichWährend es nicht kostenlos ist (aber $ 39), hat FireDaemon so gut für mich funktioniert, dass ich es empfehlen muss. Es wird Ihre Batch-Datei ausführen, verfügt jedoch über eine Menge zusätzlicher und sehr nützlicher Funktionen, wie z. B. Planung, Überwachung des Service-Ups, GUI- oder XML-basierte Installation von Diensten, Abhängigkeiten, Umgebungsvariablen und Protokollverwaltung.
Ich begann mit FireDaemon, um JBoss-Anwendungsserver zu starten (run.bat), aber kurz darauf wurde mir klar, dass ich dank der reichhaltigen Konfigurationsfähigkeiten von FireDaemon die Batchdatei abschneiden und die Absicht ihrer Befehle in der FireDaemon-Service-Definition neu erstellen konnte .
Es gibt auch ein SUPER FireDaemon namens Trinity, das Sie sich ansehen sollten, wenn Sie über eine große Anzahl von Windows-Servern verfügen, auf denen dieser Dienst (oder technisch jeder Dienst) verwaltet werden soll.
Wie Doug Currie sagt, benutze RunAsService.
Aus meiner bisherigen Erfahrung müssen Sie bedenken, dass der von Ihnen generierte Dienst dies tun wird
ich bin mir nicht sicher, ob der letzte noch zutrifft ... es war eine große Nachtstute in einem Projekt, an dem ich vor einiger Zeit gearbeitet habe.
AlwaysUp führt die Batchdatei problemlos als Dienst aus. Es ist ähnlich wie FireDaemon (oben erwähnt) und ist nicht kostenlos, aber Sie können feststellen, dass die umfangreichen Funktionen in einer professionellen Umgebung eine Bereicherung darstellen.
Viel Glück!
Keine zusätzliche Software erforderlich. Verwenden Sie den Taskplaner -> Task erstellen -> ausgeblendet. Das Kontrollkästchen für ausgeblendet befindet sich in der linken unteren Ecke. Stellen Sie die Aufgabe so ein, dass sie bei der Anmeldung ausgelöst wird (oder welche Bedingung Sie auch immer mögen) und wählen Sie die Aufgabe auf der Registerkarte "Aktionen" aus. Wenn Sie es ausgeblendet ausführen, wird sichergestellt, dass die Aufgabe im Hintergrund wie ein Dienst ausgeführt wird.
Beachten Sie, dass Sie auch festlegen müssen, dass das Programm ausgeführt wird, "ob der Benutzer angemeldet ist oder nicht", oder das Programm wird weiterhin im Vordergrund ausgeführt.