So erstellen Sie einen Windows-Dienst in XP

7

Wie kann ich eine bestimmte normale Anwendung unter Windows XP in einen Windows-Dienst verwandeln?

BEARBEITEN: Dies ist eine Serveranwendung, daher hat sie keine GUI und erfordert keine Eingabe oder Ausgabe.

Lucas Lindström
quelle
3
Sie sollten diese Frage an StackOverflow weiterleiten, da sie sich mit der Entwicklung befasst.
Jeff
3
Nicht wirklich. Das Ausführen von Programmen als Systemdienst ist ziemlich systematisch und beinhaltet, wie die folgenden Antworten zeigen, nicht das, was wir als Programmierung oder Entwicklung bezeichnen würden.
Jldugger
2
Sie können keine Anwendung in einen Windows-Dienst verwandeln. Es muss bestimmte Routinen implementieren, damit SC weiß, wie man mit ihm kommuniziert. Natürlich können Sie den Dienst anhand der folgenden Anweisungen erstellen, dies bedeutet jedoch NICHT, dass er ausgeführt wird. Ex. Führen Sie dies unter Windows XP aus. sc.exe erstellt "Foo-Dienst" binPath = "% SystemRoot% \ system32 \ notepad.exe". Dies wird einwandfrei erstellt. Versuchen Sie dann, es auszuführen. SC Starten Sie "Foo-Dienst" [SC] hat nicht rechtzeitig auf die Start- oder Kontrollanforderung reagiert.
Jeff
@JD (erster Kommentar) - Was ich vorher unmöglich hätte wissen können. Es scheint mir keine StackOverflow-Frage zu sein, und wahrscheinlich auch nicht anderen Leuten. (zweiter Kommentar) - Warum nicht diesen Kommentar als Antwort posten? Es enthält definitiv nützliche Informationen.
Lucas Lindström
1
Scheint mir definitiv eine Serverfehlerfrage zu sein.
Wayne Koorts

Antworten:

12

Mit SC können Sie benutzerdefinierte Dienste erstellen. Dieser Befehl erstellt einen Dienst:

sc.exe create "Service Name" binPath= "C:\Your Program.exe"

Beachten Sie, dass zwischen binpath = und dem Programmspeicherort ein Leerzeichen stehen muss.

So löschen Sie den Dienst:

sc.exe delete "Service Name" 
Sam Cogan
quelle
1
Die Verwendung eines normalen Programms als Dienst wie dieser ist problematisch. Wenn es ein GUI-Programm ist, vergessen Sie es. Sie werden den Bildschirm nie sehen. Wenn es sich um ein Konsolenprogramm handelt, kann es sich nicht darauf verlassen, dass der Benutzer etwas eingibt, und es wird keine an den Bildschirm gesendete Ausgabe angezeigt. Wie JD vorgeschlagen hat, kann die Frage nach StackOverflow langfristig zu besseren Ergebnissen führen.
Brad Bruce
Verwenden Sie diese Antwort in Verbindung mit der Antwort SRVANY.EXE von Oleksandr unten. Auf diese Weise können Sie die Anwendung wie einen Dienst über den Windows-Dienstmanager starten / stoppen.
Rob Penridge
2

Sobald Sie Ihre normale Anwendung erfolgreich als Dienst gestartet haben, würde ich vorschlagen, zu testen, wie sich die Anwendung beim Abmelden verhält.

Einige Anwendungen (alte?) Empfangen nicht gerne die Nachricht, die beim Protokollieren oder Herunterfahren des Computers gesendet wird.

David
quelle
1

FireDaemon ist eine weitere Option, um dies zu tun.

Ryan Bolger
quelle