Ich versuche, einen Windows-Dienst mit sc delete <service name>
zu entfernen, und stoße auf folgenden Fehler:
[SC] DeleteService FAILED 1072:
Der angegebene Dienst wurde zur Löschung markiert.
Was ich bereits getan habe:
Den Dienst gestoppt, offensichtlich. Die Abfrage sc queryex "<service name>"
liefert das folgende Ergebnis:
SERVICE_NAME: Stub-Dienst
TYP : 10 WIN32_EIGENER_PROZESS
ZUSTAND : 1 ANGEHALTEN
WIN32_EXIT_CODE : 1067 (0x42b)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WART_HINT : 0x0
PID : 0
FLAGS :
Sicherstellen, dass Microsoft Management Console geschlossen ist (taskkill /F /IM mmc.exe
),
Aufgrund dieser Entfernung zeigt services.msc
den Dienst immer noch an (mit einem Namen, aber ohne Status oder Starttyp), aber die Beschreibung lautet "<Failed to Read Description. Error Code: 2 >". Beim Versuch, die Eigenschaften anzuzeigen, wird fünfmal die Meldung "Das System kann die angegebene Datei nicht finden" angezeigt.
Das Problem besteht weiterhin.
Was ist der nächste Schritt?
Es kann mehrere Ursachen geben, die dazu führen, dass der Dienst im Zustand "zum Löschen markiert" stecken bleibt.
SysInternals' Process Explorer ist geöffnet. Wenn Sie ihn schließen, sollte der Dienst automatisch entfernt werden.
Die Microsoft Management Console (MMC) ist geöffnet. Um sicherzustellen, dass alle Instanzen geschlossen sind, führen Sie taskkill /F /IM mmc.exe
aus.
Die Dienstekonsole ist geöffnet. Dies ist dasselbe wie der vorherige Punkt, da die Dienstekonsole von der MMC gehostet wird.
Ereignisanzeige wird geöffnet. Auch hier gilt das Gleiche wie beim dritten Punkt.
Der Schlüssel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services{Dienstname} ist vorhanden.
Eine andere Person ist auf dem Server angemeldet und hat eine der zuvor genannten Anwendungen geöffnet.
Eine Instanz von Visual Studio zur Fehlersuche im Dienst ist geöffnet.
In meinem Fall wurde es durch eine unbehandelte Ausnahme beim Erstellen der eventLog-Quelle verursacht. Verwenden Sie try catch, um die Ursache zu lokalisieren.