Come risolvere "Il servizio specificato è stato contrassegnato per la cancellazione" errore
Cerco di rimuovere un servizio di Windows con sc delete <service name>
, e incontro il seguente errore:
[SC] DeleteService FAILED 1072:
Il servizio specificato è stato contrassegnato per l'eliminazione.
Cosa ho già fatto:
-
Fermato il servizio, ovviamente. Il
sc queryex "<nome del servizio>"
dà il seguente risultato:NOME SERVIZIO: Servizio Stub TIPO: 10 WIN32_OWN_PROCESS STATO: 1 FERMATO WIN32_EXIT_CODE: 1067 (0x42b) SERVICE_EXIT_CODE: 0 (0x0) CHECKPOINT: 0x0 WAIT_HINT: 0x0 PID: 0 FLAGS :
-
Assicurato che Microsoft Management Console sia chiuso (
taskkill /F /IM mmc.exe
), -
Rimosso la chiave HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\ dal registro.
A causa di questa rimozione,
services.msc
mostra ancora il servizio (con un nome, ma senza stato o tipo di avvio), ma la descrizione è "<Failed to Read Description. Codice di errore: 2 >". Quando si tenta di visualizzare le proprietà, "The system cannot find the file specified." viene mostrato cinque volte.
Il problema persiste.
Qual è il prossimo passo?
Ci possono essere diverse cause che portano il servizio ad essere bloccato in "segnato per la cancellazione".
SysInternals' Process Explorer è aperto. Chiuderlo dovrebbe portare alla rimozione automatica del servizio.
taskkill /F /IM mmc.exe
.La console dei servizi è aperta. Questo è lo stesso del punto precedente, poiché la console dei servizi è ospitata da MMC.
Event Viewer is opened. Di nuovo, questo è lo stesso del terzo punto.
Un'istanza di Visual Studio usata per il debug del servizio è aperta.
Questo può essere causato anche lasciando la console dei servizi aperta. Windows non eliminerà effettivamente il servizio finché non sarà chiuso.
Nel mio caso, è stato causato da unhandled exception durante la creazione di eventLog source. Usa try catch per individuare la causa.