Installation und Deinstallation von Diensten

Windows‑Dienste: Installation und Deinstallation über die InstallUtil.exe‑Befehlszeile sowie Lösungen für häufige Fehler

1. Installieren und Deinstallieren von Windows‑Diensten über die Befehlszeile

1. Werkzeug

Microsoft stellt InstallUtil.exe für die Installation und Deinstallation von .NET‑Windows‑Diensten zur Verfügung.

  1. InstallUtil.exe ist an die jeweilige .NET‑Framework‑Version gebunden. Stimmen Werkzeug‑Version und Zielframework des Projekts nicht überein, schlägt die Installation direkt fehl;
  2. Kopieren Sie die passende Version von InstallUtil.exe in das Debug‑Ausgabeverzeichnis des Dienstprogramms (gleicher Ordner wie die Dienst‑EXE‑Datei).

InstallUtil ist Bestandteil des .NET‑SDK. Je nach installierter SDK‑Version liegt eine andere InstallUtil‑Ausgabe vor.

.NET Framework 4.0 / 4.5 / 4.6 / 4.7 / 4.8 (am häufigsten verwendet) unterscheidet zudem zwischen 32‑Bit‑ und 64‑Bit‑Ausführungen.

Beispielpfad für die 64‑Bit‑Version: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe

.NET 5 /.NET 6 /.NET 7 /.NET 8 /.NET 9 (.NET Core‑Reihe) enthält keine InstallUtil.exe

2. Verzeichnis‑ und Dateistruktur (Debug‑Ordner)
WindowsServiceDemo.exe       // Hauptprogramm des Windows‑Dienstes
WindowsServiceDemo.pdb
InstallUtil.exe             // Kopiertes Installationswerkzeug
install.bat                 // Installations‑Skript
uninstall.bat               // Deinstallations‑Skript
log.txtCode-Sprache: JavaScript (javascript)
3. Erstellen von Batch‑Skripten

install.bat 【Dienst installieren】

d:
cd D:\WindowsService3\WindowsService3\bin\Debug
InstallUtil WindowsServicePicture.exe
pauseCode-Sprache: CSS (css)

uninstall.bat 【Dienst deinstallieren】

d:
cd D:\WindowsService3\WindowsService3\bin\Debug
InstallUtil /u WindowsServicePicture.exe
pause

Parametererklärung: /u = uninstall, steht für die Deinstallation eines Dienstes

Sie müssenmit der rechten Maustaste CMD als Administrator ausführen oder die bat‑Datei direkt mit Administratorrechten starten. Fehlende Berechtigungen lösen eine Sicherheitsausnahme aus, die Installation schlägt fehl und wird automatisch rückgängig gemacht.

2. Häufige Probleme bei der Installation von Windows‑Diensten und Lösungsansätze

Zusammenfassung der Hauptursachen

Zwei wesentliche Gründe für fehlgeschlagene Installationen:

  1. Die Kompilierplattform des Dienstprojekts, die .NET‑Version und die Version von InstallUtil.exe passen nicht zueinander;
  2. Fehlende Administratorrechte führen zu einer sicherheitsbedingten Systemblockierung.
Ausnahme 1: BadImageFormatException

Fehlermeldung

System.BadImageFormatException: Die Datei oder Assembly "WindowsServiceDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Es wurde versucht, ein Programm mit falschem Format zu laden.Code-Sprache: PHP (php)

Ursache
Es besteht eine Abweichung zwischen der Zielplattform der Kompilierung (x86/x64/AnyCPU) und der Bit‑Breite von InstallUtil.exe oder die .NET‑Version ist inkompatibel.
Lösung

  1. Stellen Sie im Projekt ein, dass mit x86 kompiliert wird;
  2. Verwenden Sie die InstallUtil.exe‑Version, die zum Zielframework des Projekts passt;
Ausnahme 2: SecurityException‑Sicherheitsberechtigungsfehler (häufig auftretend)

Fehlermeldung

Während der Installationsphase ist eine Ausnahme aufgetreten.
System.Security.SecurityException: Die Quelle wurde nicht gefunden, aber einige oder alle Ereignisprotokolle konnten nicht durchsucht werden. Nicht zugreifbares Protokoll: Security.

Die Rollback‑Phase der Installation wird gestartet.
Die Installation ist fehlgeschlagen, ein Rollback wurde ausgeführt.Code-Sprache: PHP (php)

Beispiel für einen vollständigen Protokollpfad:

H:\Projektquellcode\WindowsServiceDemo\WindowsServiceDemo\bin\Debug\WindowsServiceDemo.InstallLogCode-Sprache: CSS (css)

Hauptursache
Die Befehlszeile oder Visual Studio läuft ohne Administratorrechte und kann daher die Systemereignisprotokolle nicht lesen oder schreiben.

Standard‑Lösungen

  1. Visual Studio: Rechtsklick → Als Administrator ausführen, Projekt öffnen und neu kompilieren;
  2. CMD / bat‑Skript: Rechtsklick → Als Administrator starten;
  3. Wählen Sie für die Projektkompilierung die Plattform x86 aus.
Hinweis für eine erfolgreiche Installation

Konsolenausgabe:

Die Commit‑Phase wurde erfolgreich abgeschlossen.
Die transaktionsbasierte Installation ist abgeschlossen.Code-Sprache: PHP (php)

Öffnen Sie anschließend die Liste der Windows‑Dienste (services.msc), dort sehen Sie den neu registrierten Dienst.

Installation und Deinstallation von Diensten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert