Service Exporter: Windows-Dienste exportieren, importieren und verwalten

Service Exporter: Windows-Dienste exportieren, importieren und verwalten

Wer Windows Server administriert, kennt das Problem: Dienste werden konfiguriert, Starttypen angepasst, Recovery Aktionen gesetzt, aber eine saubere Dokumentation oder ein Backup dieser Konfiguration fehlt oft. Der Dunzweiler Service Exporter löst genau dieses Problem.

  • 🔍 Alle Windows Dienste auf einen Blick auflisten und filtern
  • 💾 Konfigurationen als JSON oder Batch Script exportieren
  • 📥 Gesicherte Konfigurationen importieren, bearbeiten und direkt installieren
  • 🔄 Vorher/Nachher Vergleich vor dem Übernehmen von Änderungen

Inhalt

ThemaBeschreibung
Was ist der Service Exporter?Überblick und Funktionsweise
HauptfensterDienste auflisten und filtern
ExportJSON und Batch Export
PasswörterEinschränkung bei Dienstkonten mit Passwort
ImportDienste wiederherstellen und bearbeiten
VorschauÄnderungen farbcodiert vergleichen
InstallationDirekt oder als Script

Was ist der Service Exporter?

Der Service Exporter ist eine native Windows Anwendung, die über die Windows API direkt auf den Service Control Manager zugreift und sämtliche Dienstkonfigurationen ausliest. Das geht weit über das hinaus, was services.msc standardmäßig anzeigt.

Einige Eigenschaften, die der Service Exporter ausliest, sind in der Windows Dienstverwaltung (services.msc) gar nicht sichtbar. Dazu gehören unter anderem der SID Typ, das Pre Shutdown Timeout, Launch Protection und die erforderlichen Berechtigungen eines Dienstes. Diese Werte lassen sich normalerweise nur über sc Befehle oder die Registry einsehen.

Das Tool erfordert Administratorrechte, da der Zugriff auf den Service Control Manager entsprechende Berechtigungen voraussetzt.


Hauptfenster: Dienste auflisten und filtern

Nach dem Start werden alle installierten Windows Dienste in einer sortierbaren Tabelle angezeigt. Über das Suchfeld lässt sich die Liste in Echtzeit filtern. Per Checkbox können einzelne Dienste für den Export ausgewählt werden.

Hauptfenster des Service Exporters


Export: JSON und Batch

Der Export unterstützt zwei Formate:

JSON Export

Das JSON Format eignet sich ideal für Backups und Versionierung. Alle Diensteigenschaften werden vollständig gespeichert, inklusive Recovery Aktionen, Abhängigkeiten und erweiterten Einstellungen wie SID Typ oder Launch Protection.

[
    {
        "accountName": "LocalSystem",
        "binaryPath": "C:\\GitLab-Runner\\gitlab-runner-windows-amd64.exe run --config C:\\GitLab-Runner\\config.toml --working-directory C:\\GitLab-Runner --service gitlab-runner --syslog",
        "dependencies": [],
        "description": "GitLab Runner",
        "displayName": "gitlab-runner",
        "errorControl": "Ignore",
        "failureResetDays": 0,
        "firstFailure": { "delayMs": 0, "type": "" },
        "launchProtected": "None",
        "preShutdownTimeout": 10000,
        "serviceName": "gitlab-runner",
        "serviceType": "Own",
        "sidType": "None",
        "startType": "Auto",
        "secondFailure": { "delayMs": 0, "type": "" },
        "subsequentFailure": { "delayMs": 0, "type": "" }
    }
]

Batch Export

Der Batch Export erzeugt ein .bat Script mit sc Befehlen, das direkt auf einem anderen System ausgeführt werden kann. Praktisch für automatisierte Deployments oder die Wiederherstellung nach einer Neuinstallation.

Die generierten Befehle verwenden dabei die korrekte sc Syntax mit dem Leerzeichen nach dem =, wie es das Tool erwartet (z.B. start= auto statt start=auto). Wer schon mal manuell sc Befehle gebaut hat, weiß wie fehleranfällig das ist.

@echo off
REM ServiceExporter - Generated batch file
REM Run as Administrator!
 
sc create "gitlab-runner" binPath= "C:\GitLab-Runner\gitlab-runner-windows-amd64.exe run --config C:\GitLab-Runner\config.toml --working-directory C:\GitLab-Runner --service gitlab-runner --syslog" start= auto type= own error= ignore obj= "LocalSystem" DisplayName= "gitlab-runner"
sc description "gitlab-runner" "GitLab Runner"
sc preshutdown "gitlab-runner" 10000
 
echo Done.
pause

Hinweis: Passwörter werden nicht exportiert

Wichtig: Der Service Exporter kann keine Passwörter für Dienstkonten exportieren. Windows gibt Passwörter über die Service API grundsätzlich nicht heraus. Exportiert wird lediglich der Kontoname (z.B. DOMAIN\ServiceUser), unter dem ein Dienst läuft.

Dienste, die unter LocalSystem, LocalService oder NetworkService laufen, sind davon nicht betroffen, da diese Konten kein Passwort benötigen.

Workflow: Dienst mit benutzerdefiniertem Konto importieren

Wenn ein exportierter Dienst unter einem bestimmten Benutzerkonto läuft, sind nach dem Import folgende Schritte nötig:

  1. JSON importieren und den Dienst im Import Dialog öffnen
  2. Im Tab Anmelden prüfen, ob das korrekte Dienstkonto eingetragen ist
  3. Das Passwort manuell eintragen (das Feld ist beim Import leer, da Passwörter nicht exportiert werden)
  4. Falls das Benutzerkonto auf dem Zielsystem noch nicht existiert, dieses vorher anlegen und die nötigen Berechtigungen vergeben (insbesondere Log on as a service)
  5. Den Dienst über die Vorschau prüfen und installieren

Beim Batch Export wird der sc create Befehl mit obj= "Kontoname" erzeugt, aber ohne password= Parameter. Das Passwort muss im Batch Script manuell ergänzt werden:

sc create "MeinDienst" binPath= "C:\..." start= auto obj= "DOMAIN\ServiceUser" password= "Passwort"

Import: Dienste wiederherstellen und bearbeiten

Über den Import Dialog lassen sich zuvor exportierte JSON Dateien laden. Die importierten Dienste werden in einer Übersicht dargestellt und können vor der Installation bearbeitet werden.

Import Dialog

Diensteigenschaften bearbeiten

Per Doppelklick öffnet sich ein mehrteiliger Editor mit folgenden Tabs:

  • Allgemein: Name, Anzeigename, Beschreibung, Pfad zur Binärdatei, Starttyp
  • Anmelden: Dienstkonto (LocalSystem oder benutzerdefiniert)
  • Wiederherstellung: Fehleraktionen in drei Stufen (Dienst neustarten, Computer neustarten, Programm ausführen)
  • Abhängigkeiten: Dienstabhängigkeiten und Ladereihenfolge
  • Erweitert: Diensttyp, Fehlersteuerung, SID Typ, Pre Shutdown Timeout, Launch Protection, erforderliche Berechtigungen

Dienst Editor


Vorschau: Änderungen vergleichen

Bevor Dienste installiert werden, bietet die Vorschau Funktion einen farbcodierten Vergleich zwischen der aktuellen und der importierten Konfiguration:

  • 🔴 Rot: aktuelle Werte auf dem System
  • 🟢 Grün: importierte Werte, die übernommen werden

So lässt sich auf einen Blick erkennen, was sich ändern würde, bevor tatsächlich etwas am System verändert wird.

Vorschau mit Diff Ansicht


Installation: Direkt oder als Script

Nach der Prüfung gibt es zwei Wege:

  1. Direkte Installation: Die Dienste werden über sc Befehle direkt auf dem System eingerichtet. Ein Fortschrittsdialog zeigt den Status, und Fehler werden pro Dienst protokolliert.
  2. Batch Script generieren: Statt direkt zu installieren, kann ein Script erzeugt werden, das auf einem anderen System ausgeführt wird.

Fazit

Der Service Exporter schließt eine Lücke, die Windows von Haus aus offen lässt: das einfache Sichern und Wiederherstellen von Dienstkonfigurationen. Ob für Server Migrationen, Dokumentation oder das schnelle Vergleichen von Konfigurationen zwischen Systemen, das Tool macht einen manuellen und fehleranfälligen Prozess übersichtlich und reproduzierbar.

Den Service Exporter gibt es auf der Download-Seite.

Fehler gefunden? Bitte melden an jens@dunzweiler.me.