StartWindows-BetriebssystemWindows Tipps und Tricks2 Methoden Windows-Dienst unter Windows erstellen

2 Methoden Windows-Dienst unter Windows erstellen

Dieser Artikel stellt zwei zuverlässige Methoden zum Erstellen eines Windows-Dienstes vor: über die Eingabeaufforderung (CMD) und den Non-Sucking Service Manager (NSSM). Sie lernen schrittweise Vorgehensweisen, Funktionsvergleiche und Best Practices aus der Sicht von Technikern und Gamern kennen. Am Ende können Sie jede gewöhnliche Anwendung in einen stabilen, automatisierten Hintergrunddienst verwandeln.

Haben Sie sich jemals gewünscht, dass ein Programm auch dann weiterläuft, wenn kein Benutzer angemeldet ist? Oder betreiben Sie vielleicht einen eigenen Gameserver und benötigen dessen dauerhafte Verfügbarkeit, ohne eine Desktopsitzung offen halten zu müssen. Die Antwort ist ein Windows-Dienst.

Ein Windows-Dienst ist ein spezielles Programm, das hinter den Kulissen des Betriebssystems arbeitet. Es besitzt kein Fenster, keinen Eintrag in der Taskleiste und erfordert keine Benutzerinteraktion. Dienste werden von der Service Control Manager (SCM)-Komponente gesteuert, die für das Starten, Stoppen und Überwachen jedes Dienstes zuständig ist. Noch interessanter: Sie können einen Dienst so konfigurieren, dass er direkt beim Systemstart ausgeführt wird – noch bevor Sie sich anmelden.

Ein professioneller Gamer oder Systemtechniker kann die Macht von Windows-Diensten nicht ignorieren. Sie sind das Fundament der Automatisierung unter Windows.

Leider kann nicht jedes Programm direkt zu einem Dienst werden. Normale Anwendungen scheitern oft, weil sie nicht richtig auf Stopp- oder Pause-Befehle des SCM reagieren. Daher benötigen Sie spezielle Methoden. Die beiden effektivsten Wege sind die integrierte sc.exe (CMD) und das Drittanbieter-Tool NSSM. Beide haben ihre Vorzüge. Sehen wir sie uns im Detail an.

Was ist ein Windows-Dienst und warum sollte man einen erstellen?

Technisch gesehen läuft ein Windows-Dienst in einer speziellen nicht-interaktiven Sitzung (Sitzung 0), die isoliert vom Benutzerdesktop ist. Diese Isolierung hält den Dienst aktiv, auch wenn Sie sich abmelden oder den Benutzer wechseln. Die SCM speichert jeden Dienst in der Registrierung unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Dort finden Sie den Starttyp (automatisch, manuell, deaktiviert), das Ausführungskonto und die Wiederherstellungsoptionen für den Fall eines Absturzes.

Wann sollten Sie Ihren eigenen Windows-Dienst erstellen? Hier sind typische Szenarien für Profis und Gamer:

  • Betreiben dedizierter Gameserver (Minecraft, Valheim, ARK), damit der Server 24/7 online ist, ohne dass ein Desktop geöffnet sein muss.
  • Automatisieren von Backup-Skripten auf NAS oder in die Cloud.
  • Überwachen von Netzwerkressourcen oder Komponententemperaturen.
  • Ausführen von Discord- oder Telegram-Bots als Hintergrunddienste.
  • Einkapseln von Legacy-Anwendungen, die kontinuierlich ohne Benutzereingriff laufen müssen.

Bevor Sie loslegen, bereiten Sie die ausführbare Datei (.exe) oder Batch-Datei (.bat) vor, die Sie in einen Dienst verwandeln möchten. Stellen Sie sicher, dass die Datei getestet wurde und beim direkten Aufruf normal funktioniert. Verwenden Sie keine Datei, die eine kontinuierliche Tastatureingabe erfordert, denn ein Dienst hat keinen Zugriff auf einen interaktiven Desktop (außer Sie erteilen spezielle Berechtigungen).

Methode 1: Erstellen eines Windows-Dienstes mit CMD (sc.exe)

Die Eingabeaufforderung bietet ein mächtiges Werkzeug namens sc.exe (Service Controller). Dieses Dienstprogramm ist seit Windows XP verfügbar und benötigt keine Installation. Sein Nachteil ist, dass sc.exe keinen automatischen Neustart unterstützt und nicht für GUI-Anwendungen geeignet ist. Für einfache Szenarien wie das Ausführen von Batch-Skripten oder Konsolen-Apps ist diese Methode jedoch sehr schnell.

Detaillierte Schritte mit CMD

1. Öffnen Sie CMD als Administrator. Drücken Sie die Windows-Taste, tippen Sie „cmd“ ein, klicken Sie mit der rechten Maustaste und wählen Sie „Als Administrator ausführen“. Ohne Administratorrechte kann sc.exe keinen Dienst erstellen.

2. Geben Sie die folgende grundlegende Syntax ein. Achten Sie genau auf Leerzeichen und Anführungszeichen.

sc.exe create <dienstname> displayname= <anzeigename> binpath= <pfad_zur_datei>

Erklärung der Parameter:

  • dienstname : Ein eindeutiger interner Name ohne Leerzeichen. Beispiel: MinecraftServer.
  • anzeigename : Der Name, der in Services.msc angezeigt wird, darf Leerzeichen enthalten. Beispiel: "Minecraft Dedicated Server".
  • pfad_zur_datei : Vollständiger Pfad zur exe- oder bat-Datei. Bei Leerzeichen in doppelte Anführungszeichen setzen. Beispiel: "C:\Programme\MeineApp\server.exe".

3. Führen Sie ein konkretes Beispiel aus. Angenommen, Sie haben eine Datei C:\MeineAnwendung.exe und möchten den Dienst „MeinDienst“ nennen.

sc.exe create "MeinDienst" displayname= "Mein Dienst" binPath= "C:\MeineAnwendung.exe"

Beachten Sie das Leerzeichen nach dem Gleichheitszeichen bei displayname= und binpath=. Dies ist eine strikte Syntaxregel von sc.exe. Wenn Sie displayname="Mein Dienst" ohne Leerzeichen schreiben, schlägt der Befehl mit einem Syntaxfehler fehl. Daher müssen Sie präzise sein.

Erstellen eines Windows-Dienstes mit dem sc-Befehl in der Eingabeaufforderung
Der sc.exe-Befehl beim Erstellen eines neuen Windows-Dienstes

4. Überprüfen Sie den Dienst. Öffnen Sie Services.msc (Win+R drücken, services.msc eingeben). Suchen Sie den Dienst mit dem Anzeigenamen „Mein Dienst“. Sein Status ist „Beendet“. Klicken Sie mit der rechten Maustaste und wählen Sie Starten. Alternativ verwenden Sie den Befehl sc start MeinDienst.

5. (Optional) Automatischen Start festlegen. Damit der Dienst beim Booten startet, führen Sie aus:

sc config "MeinDienst" start= auto

Nachteil der CMD-Methode: sc.exe bietet keinen Mechanismus zum Neustart bei Absturz. Wenn Ihre Anwendung plötzlich beendet wird, stirbt der Dienst und kommt nicht zurück. Für Produktionsumgebungen oder Gameserver, die eine hohe Verfügbarkeit benötigen, brauchen Sie NSSM.

Methode 2: Erstellen eines Windows-Dienstes mit NSSM (Non-Sucking Service Manager)

NSSM ist ein Open-Source-Tool, das speziell entwickelt wurde, um die „Schwächen“ von sc.exe zu überwinden. Der Name „Non-Sucking“ deutet an, dass dieses Tool nicht so lästig ist wie die integrierte Methode. NSSM kann untergeordnete Prozesse überwachen, automatisch neu starten und die Konsolenausgabe in einer Datei protokollieren. Dieses Tool ist ein Favorit unter Servertechnikern und Gamern, die modifizierte Gameserver betreiben.

Schritte zur Verwendung von NSSM (mit vollständiger GUI)

1. Laden Sie NSSM herunter. Besuchen Sie die offizielle Website unter nssm.cc/download. Wählen Sie die 32-Bit- oder 64-Bit-Version passend zu Ihrer Windows-Architektur. Verwenden Sie die neueste Version (zum Zeitpunkt der Erstellung dieses Artikels ist es 2.24).

2. Extrahieren Sie in einen permanenten Ordner. Erstellen Sie zum Beispiel C:\nssm und extrahieren Sie den Zip-Inhalt dorthin. Ein Ordner win64 oder win32 wird erscheinen. Legen Sie ihn nicht in einen temporären Ordner, da die Datei während der Laufzeit des Dienstes kontinuierlich verwendet wird.

3. Öffnen Sie CMD als Administrator. Wechseln Sie in das Verzeichnis von nssm.exe. Beispiel:

cd C:\nssm\win64

4. Starten Sie die GUI-Installation. Geben Sie den Befehl ein:

nssm install

Ein GUI-Fenster öffnet sich. Das ist der Hauptvorteil von NSSM: Sie müssen sich keine komplexe Syntax merken.

NSSM-GUI-Oberfläche zur einfachen Erstellung eines Windows-Dienstes
NSSM-Konfigurationsfenster: Füllen Sie den Pfad der ausführbaren Datei, das Arbeitsverzeichnis und den Dienstnamen aus.

5. Füllen Sie den Reiter „Application“ aus. Dieser Bereich ist Pflicht:

  • Path : Klicken Sie auf „…“ und wählen Sie Ihre exe/bat-Datei.
  • Startup directory : Das Verzeichnis, in dem die Anwendung arbeitet (normalerweise das gleiche wie der Ordner der exe-Datei). Füllen Sie es aus, damit die App bei der Suche nach Konfigurationsdateien nicht verwirrt wird.
  • Arguments : Wenn die Anwendung Parameter benötigt, z.B. --port 25565, tragen Sie sie hier ein.
  • Service name : Interner Dienstname. Verwenden Sie einen eindeutigen Namen ohne Leerzeichen.

6. Öffnen Sie den Reiter „Details“ (optional). Tragen Sie den Display name (Anzeigename) und die Description (Beschreibung) ein. Dies hilft Ihnen, den Dienst in Services.msc zu identifizieren.

7. Öffnen Sie den Reiter „Exit actions“ – dies ist der kritischste Teil. NSSM ermöglicht es Ihnen, Aktionen für den Fall festzulegen, dass die Anwendung beendet wird:

  • Restart always : Startet den Dienst jedes Mal neu, wenn er stirbt (unabhängig vom Exit-Code).
  • Restart if exit code != 0 : Startet nur neu, wenn ein Fehler auftritt.
  • Take no action : Stirbt vollständig, kein Neustart.

Für einen Gameserver wählen Sie „Restart always“ mit einer Verzögerung von 5-10 Sekunden. Dieser Prozess (typo: Prozeß – alt, aber akzeptiert) gewährleistet maximale Verfügbarkeit.

8. Klicken Sie auf die Schaltfläche „Install service“. NSSM registriert den Dienst beim SCM. Sie sehen eine Meldung „Service ‚dienstname‘ installed successfully!“.

9. Überprüfen und starten Sie den Dienst. Öffnen Sie Services.msc, suchen Sie Ihren Dienst und klicken Sie auf Starten. Alternativ über CMD: nssm start dienstname. Um die Konsolenausgabe (stdout/stderr) zu sehen, öffnen Sie standardmäßig den Ordner C:\nssm\logs.

Vorteile von NSSM, die Sie kennen sollten

  • Intelligenter automatischer Neustart : Kann zwischen normaler Beendung und Absturz unterscheiden.
  • Vollständige Protokollierung : Alles, was die Anwendung auf der Konsole ausgibt, wird in einer Datei gespeichert.
  • Einfache Bearbeitung des Dienstes : Einfach nssm edit dienstname ohne Deinstallation.
  • Sicheres Entfernen des Dienstes : nssm remove dienstname confirm.

Schneller Vergleich: sc.exe vs. NSSM

Aspektsc.exe (CMD)NSSM
VerfügbarkeitIn Windows integriert, keine InstallationMuss heruntergeladen werden, einmalige Extraktion
Unterstützung für automatischen NeustartNein (erfordert komplexe sc failure-Konfiguration)Ja, sehr einfach über GUI
Protokollierung der AusgabeNeinJa, automatisch in Datei
Einfachheit für AnfängerMuss Syntax und Leerzeichen auswendig lernenIntuitive GUI
Ausführen von GUI-AnwendungenScheitert oftMit speziellen Einstellungen möglich
Dateigröße~50KB (systemintegriert)~300KB
Vergleich der Methoden zur Erstellung von Windows-Diensten: integriertes sc.exe vs. NSSM

Wenn Sie nur einen einfachen Dienst benötigen und keinen automatischen Neustart brauchen, reicht sc.exe aus. Für hohe Zuverlässigkeit, insbesondere bei Gameservern oder kritischen Bots, ist NSSM die richtige Wahl.

Tipps zur Verwaltung von Windows-Diensten für mehr Stabilität

Sobald Ihr Dienst läuft, müssen Sie ihn überwachen und warten. Hier sind Best Practices von erfahrenen Technikern:

  • Verwenden Sie ein Konto mit minimalen Rechten. Verwenden Sie nicht LocalSystem, wenn es nicht nötig ist. Erstellen Sie ein dediziertes Konto (z.B. svc_spiel) mit dem Recht „Als Dienst anmelden“.
  • Legen Sie Wiederherstellungsoptionen für sc.exe-Dienste fest: sc failure "name" reset= 86400 actions= restart/5000/restart/10000/restart/30000. Dies startet den Dienst nach 5 Sekunden neu, wenn er fehlschlägt.
  • Überwachen Sie Protokolle regelmäßig. Bei NSSM werden die Protokolle im Unterordner logs gespeichert. Bei sc.exe müssen Sie die Ausgabe der Anwendung selbst in eine Datei umleiten.
  • Testen Sie den Dienst im Konsolenmodus, bevor Sie ihn installieren. Stellen Sie sicher, dass die Anwendung ohne Benutzereingabe läuft.
  • Dokumentieren Sie Konfigurationsänderungen. Führen Sie eine einfache Dokumentation, um die Fehlersuche zu erleichtern.

Zitat eines Praktikers: „Ich verwende NSSM, um einen Community-Minecraft-Server zu betreiben. Mit der automatischen Neustart-Konfiguration bleibt der Server online, selbst wenn er gelegentlich aufgrund von Mod-Konflikten abstürzt. Meine Verfügbarkeit erreichte in den letzten 6 Monaten 99,9 %.“ – Andi, Gameserver-Techniker.

Fazit: Wählen Sie die passende Methode für Ihre Anforderungen

Das Erstellen eines Windows-Dienstes ist nicht kompliziert, wenn Sie die beiden Hauptmethoden verstehen. Die Eingabeaufforderung (sc.exe) bietet Geschwindigkeit und keine Installation, geeignet für einfache Skripte und Techniker, die die Kommandozeile lieben. NSSM hingegen bietet automatischen Neustart, Protokollierung und einfache Konfiguration – ideal für Gameserver, Bots oder Anwendungen, die eine hohe Verfügbarkeit benötigen.

Mit der obigen Schritt-für-Schritt-Anleitung haben Sie jetzt das Wissen, um nahezu jede Konsolen- oder Batch-Anwendung in einen zuverlässigen Windows-Dienst zu verwandeln. Testen Sie immer zuerst in einer Nicht-Produktionsumgebung. Viel Erfolg bei der Automatisierung Ihres Systems!

Benötigen Sie weitere Referenzen? Besuchen Sie die offizielle Microsoft-Dokumentation zum Service Control Manager oder das NSSM-Forum für weiterführende Diskussionen.

Neueste Artikel