Fehler 193: keine zulässige Win32-Anwendung beim Start eines Windows-Dienstes

Wenn beim Starten eines Windows-Services der Fehler 193 “Keine zulässige Win32-Anwendung” gemeldet wird, liegt es häufig daran, dass der Windows-Service-Manager unseren Dienst nicht finden kann. Dies wird durch einen Bug im Windows-Dienste-Manager verursacht und tritt u. a. dann auf, wenn ein Verzeichnisname ein Leerzeichen enthält (z. B. C:\Users\Fridolin Froehlich) und in dem darüberliegenden Verzeichnis (C:\Users) eine Datei vorhanden ist, deren Dateiname aus dem ersten Wort des Verzeichnisses besteht (z. B. “C:\Users\Fridolin”). Klingt kompliziert – daher machen wir ein Beispiel:

Beispiel:

Unser Benutzer heißt “Fridolin Froehlich” und sein Home-Verzeichnis lautet C:\Users\Fridolin Froehlich

Im Verzeichnis Users liegt aber auch eine Datei namens Fridolin

Der erstellte Windows-Service liegt im Verzeichnis C:\Users\Fridolin Froehlich\Repositories\Mein Windows-Service\bin

Wir registrieren den Windows-Service in der PowerShell mit Administrator-Rechten mit dem Befehl:
sc.exe create "Mein Windows-Service" binpath="C:\Users\Fridolin Froehlich\Repositories\Mein Windows-Service\bin\Mein Windows-Service.exe"

Daraufhin wird uns die Erstellung des Windows-Service bestätigt:

[SC] CreateService ERFOLG

WICHTIG: Diese Erfolgsmeldung ist keine Garantie dafür, dass der Service vom Windows Service-Manager auch tatsächlich gefunden und gestartet werden kann.

Versuchen wir nun den Service zu starten:

sc.exe start "Mein Windows-Service"

Prompt erhalten wir eine Fehlermeldung: [SC] StartService NICHT ERFOLGREICH, Fehler 193.

Wie löst man den Fehler 193 beim Starten eines Windows-Diensts?

  • Möglichkeit A: Die Problem-Datei finden und umbenennen

    In obigem Beispiel ist die Datei C:\Users\Fridolin das Problem. Wenn wir die Datei noch brauchen, sollten wir sie einfach umbenennen. Hierbei genügt es, wenn wir die Datei mit einer Dateiendung versehen (z. B. .txt). Das geht zum Beispiel mit dem Befehl ren C:\Users\Fridolin C:\Users\Fridolin.txt.

    Benötigen wir die Datei nicht mehr, können wir sie auch einfach löschen z. B. mit dem Befehl del C:\Users\Fridolin

  • Möglichkeit B: Ein anderes Verzeichnis für das Speichern des Windows-Service wählen

    Meist ist das Benutzerverzeichnis (in unserem Fall C:\Users\Fridolin Froehlich das Problem, da es meist aus mehreren Wörtern besteht (Vorname, Nachname). Wir müssen uns also ein Verzeichnis heraussuchen oder erstellen, das nicht innerhalb des Benutzerverzeichnisses liegt. Beispielsweise C:\Projekte\Mein Windows-Service Dieses Verzeichnis erstellen wir mit dem Befehl md "C:\Projekte\Mein Windows-Service"

    Anschließend kopieren wir unsere Service-Echse äh Service-Exe in dieses Verzeichnis: copy "C:\Users\Fridolin Froehlich\Repositories\Mein Windows-Service\bin\Mein Windows-Service.exe" "C:\Projekte\Mein Windows-Service\"

Was tun, wenn die Fehlermeldung kommt “Set-Content : Es wurde kein Positionsparameter gefunden, der das Argument “binpath=” akzeptiert.”?

Dieser Fehler tritt auf, wenn man in der PowerShell nur den Befehl sc verwendet, anstatt sc.exe

Der Befehl sc in der Windows-PowerShell startet das Cmdlet “Set-Content”. Das ist jedoch nicht das, was wir brauchen. Wir benötigen sc.exe – ein Befehlszeilenprogramm für die Kommunikation mit dem Dienststeuerungs-Manager und mit den Windows-Diensten.

René Pöpperl

Seit 2010 arbeite ich als Softwareentwickler. Mein hauptsächlichen Interessen liegen in gut durchdachtem UI-Design und hoher Code-Qualität.

Schreibe einen Kommentar

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

Consent Management Platform von Real Cookie Banner