====== Windows - Programme als Services starten ====== **Wir zeigen Ihnen hier, wie Sie ein beliebiges Programm als Service unter Windows starten.** Sie haben sich vielleicht gelegentlich schon gewünscht, ein x-beliebiges Programm unabhängig von der Anmeldung eines Benutzers im Hintergrund zu starten. Dieser Betrieb als Service verlangt vom Programmierer spezielle Vorkehrungen, damit ein Programm, das als Service laufen soll, in der dafür vorgeschriebenen Weise mit dem Betriebssystem interagiert. Programme, die nicht für den Service-Betrieb geschrieben sind, können aber mit Hilfe und sozusagen "unter den Fittichen" eines zusätzlichen Programmes, das selbst als Service programmiert ist, dennoch als solcher ablaufen. Microsoft stellt im Rahmen des **NT Resource Kit** ein derartiges Werkzeug zur Verfügung: **srvany.exe**. **Beachten Sie bitte:** * Nicht jedes Programm kann und sollte als Service "missbraucht" werden. Es eignen sich vor allem solche Programme, die für Service-Zwecke und für den Ablauf im Hintergrund gedacht sind.\\ **Für Fehler auf Grund falscher Konfigurationsversuche können wir keine Haftung übernehmen.** * Das Vorgehen bei der Installation ist nicht ganz trivial. Sie sollten deshalb einige Vorkenntnisse im Umgang mit Windows mitbringen. * Falls noch nicht vorhanden, müssen Sie zwei Programme aus dem Resource Kit auf Ihren PC laden und zur Ausführung bereitstellen. Die folgenden Seiten gehen davon aus, dass Sie beide Programme in dasselbe Verzeichnis speichern. * Jedes Programm, das auf diese Weise als Service ins System integriert werden soll, benötigt seinen eigenen srvany-Service. Es liegt eine Lizenz für die Universität Freiburg vor. Deshalb können diese Programme nur nach Anmeldung mit einem gültigen Benutzerkonto des Rechenzentrums heruntergeladen werden.
DOWNLOAD: srvany.exe instsrv.exe Beispieldateien (ZIP) aus dieser Seite
**Jetzt geht's los!** Mit wenigen Zeilenkommandos im DOS-Fenster und einigen Mausklicks haben Sie die Arbeit erledigt. Bitte berücksichtigen: Falls im Pfad Leerzeichen auftauchen, muß die gesamte Pfadangabe in Anführungszeichen gesetzt werden.\\ Beispiel: "c:\program files\anyprogram.exe" \\ ===== Schritt 1: Installieren von SRVANY ===== Vorausgesetzt, Sie haben die beiden Programme srvany.exe und instsrv.exe in einem beliebigen Verzeichnis Ihrer Wahl (z.b. c:\bin) untergebracht. Dann wechseln Sie am besten in dieses Verzeichnis und geben folgendes Kommando ein: instsrv testservice c:\bin\srvany.exe Der **Service-Name**, in diesem Beispiel **testservice** kann von Ihnen frei vergeben werden. Einzige Einschränkung: **Der Name darf im System nur einmal auftauchen.** Er dient zur Identifizierung z.B. im Task Monitor des Systems und bei der Deinstallation des Service. Es muss auf jeden Fall **der volle Pfadname** für das Service-Programm angegeben werden. Damit wird also srvany.exe unter dem Namen testservice als Service registriert. Der Service startet automatisch, wenn das System hochfährt; er läuft als Systemprozess. Nach dieser Registrierung läuft der Service noch nicht! \\ ===== Schritt 2: Konfiguration von SRVANY ===== Nun benötigt der Service (im Beispiel: testservice) zusätzliche Angaben, welches Programm (im Beispiel: testservice) er in seiner Umgebung ablaufen lassen soll. Dabei sind nicht nur der Pfad der Programmdatei sondern sind auch die Kommandozeilen-Argumente in der Systemregistry einzutragen. Der Pfad in der Registry-Datei lautet für unser Beispiel: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\testservice\ Nach der Installation im Schritt 1 wurde sofort dieser Schlüssel angelegt. Nun müssen Sie in diesem Registry-Pfad zunächst den Unterschlüssel **Parameters** und darin dann drei Stringparameter (REG_SZ) anlegen, die das Anwendungsprogramm und seine Parameter bezeichnen. Um Ihnen die Arbeit etwas zu erleichtern, erstellen wir Ihnen hier beispielhaft eine Stapeldatei (.BAT) und eine Registry-Konfigurationsdatei (.REG) zu einer Testanwendung test.bat. Alle drei können Sie markieren, kopieren und lokal speichern, um damit zu testen. Wenn Sie die Stapeldatei mit Doppelklick im Windows-Explorer aufrufen, wird Ihnen das manuelle Installieren des Dienstes abgenommen. **Die Stapeldatei zum Kopieren (z.B. nach testservice.bat):** @echo off SET APPNAME=testservice SET INSTSRV=c:\bin\instsrv.exe SET SRVANY=c:\bin\srvany.exe echo. if "%1" == "stop" goto stop echo Einrichten des Service %APPNAME% echo ---------------------------------------------------------------------- echo Anhalten und Deinstallieren mit dem Aufruf %APPNAME% stop echo Pfadangaben notfalls ergaenzen echo. echo Installieren des Service... "%INSTSRV%" "%APPNAME%" "%SRVANY%" echo. echo Installieren der Registry-Werte... regedit "%APPNAME%.reg" echo. echo Starten des Service... net start "%APPNAME%" goto ende :stop echo Anhalten und Deinstallieren des Service %APPNAME% echo ---------------------------------------------------------------------- echo Stoppen des Service... net stop "%APPNAME%" echo. echo Deinstallieren des Service und der Registry-Werte... "%INSTSRV%" "%APPNAME%" remove :ende echo. echo *** Fertig *** echo. Ersetzen Sie bei den Zeilen SET APPNAME=testservice\\ SET INSTSRV=c:\bin\instsrv.exe\\ SET SRVANY=c:\bin\srvany.exe\\ auf der rechten Seite der Zuweisung die Angaben nach Ihren Wünschen. \\ Dazu passend müssen Sie eine Konfigurationsdatei für die Registry anlegen, die nachfolgend für unser Beispiel formuliert ist. Nennen Sie die Datei (APPNAME).reg **Die zugehörige Registry-Datei zum Kopieren (z.B. nach testservice.reg):** REGEDIT4 (1. Zeile bei Windows XP) Windows Registry Editor Version 5.00 (1. Zeile bei Windows 7) [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\testservice\Parameters] "Application"="c:\\bin\\test.bat" "AppDirectory"="c:\\bin" "AppParameters"="Mein Parameter" Je nach Betriebssystem-Version muss die erste Zeile umformuliert werden. Im obigen Beispiel sind zwei Versionen angegeben. Löschen sie die jeweils falsch Zeile aus der Datei (auch den Kommentar in Klammern!!!). In der Zeile, die mit "[HKEY_LOCAL_MACHINE" beginnt, müssen Sie ggf. den Servicenamen (hier testservice) durch den engültigen Namen ersetzen. Achten Sie auch darauf, dass bei den Parameterwerten das Trennzeichen '\' innerhalb eines Pfadnamens immer doppelt geschrieben wird. \\ Und nun unsere Beispiel-Anwendung. Es handelt sich um ein DOS-Batch-Script und heißt hier test.bat. **Die zugehörige Anwendung zum Kopieren (z.B. nach test.bat):** @echo off echo. >>test.log echo ---------------------------------------->>test.log echo Mein Parameter lautet "%*" >>test.log echo. >>test.log dir c:\ >>test.log Dieses kleine Script wird jedesmal, wenn der Service testservice startet, eine Meldung mit dem in der Registry gespeicherten Parameter "AppParameters" und danach das Verzeichnislisting von c:\ an die Datei test.log anhängen. test.log wächst also mit jedem Service-Start um die Ausgabedaten. \\ ===== Schritt 3: Installation bzw. Start der Anwendung als Service ===== Der neu festgelegte Service wird im obigen Script sofort gestartet und läuft bei jedem Systemstart automatisch los. Die Installation des Service und der erste Start wird durch den einfachen Aufruf des Batch-Scriptes durchgeführt: testservice Sie können mit dem folgenden Kommando den Service auch manuell starten, nachdem er wie in Schritt 1 installiert wurde: net start testservice \\ ===== Schritt 4: Stop bzw. Deinstallation des Service ===== **Die manuelle Variante:** Zunächst beenden Sie den Betrieb mit: net stop testservice Danach entfernen Sie den Service aus dem System mit: instsrv testservice remove Dabei verschwindet dann auch der gesamte Eintrag **HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\testservice\** aus der Registry. \\ **Die Script-Variante:** Rufen Sie das Script, mit dem Sie den Service eingerichtet haben, mit dem Argument 'stop' auf: testservice stop Dann wird der Service gestoppt und aus dem System entfernt. \\ ===== Anmerkung zum Acrobat Destiller ===== **Zitat eines Lesers:** "Eine kleine Einstellung mußte ich ergänzen: Und zwar legt der Distiller (Acrobat 5) unter **HKEY_CURRENT_USER/Software/ADOBE/Acrobat Distiller/5.0/WatchedFolders/** das überwachte Verzeichnis an. Will man den Dienst auf einem Server verwenden, muß man der Pfad zusätzlich unter **HKEY_USERS/.DEFAULT/Software/Adobe/Acrobat Distiller/5.0/WatchedFolders/** eintragen." \\ \\ {{tag>windows}}