Come posso disinstallare un servizio Windows se i file non esistono più?


570

Come posso disinstallare un servizio Windows .NET, se i file di servizio non esistono più?

Ho installato un servizio Windows .NET usando InstallUtil. Da allora ho cancellato i file ma ho dimenticato di eseguire

 InstallUtil /u

primo. Quindi il servizio è ancora elencato nella MMC Servizi.

Devo accedere al registro? O c'è un modo migliore?



2
Anche tu hai interrotto prima il servizio? (-> net stop yourservice)
Jos

Un thread molto strettamente correlato qui .
RBT,

questo sito mi aiuta e spero che ti possa aiutare in questo problema howtogeek.com/howto/windows-vista/…
Ahmed Elbendary

Risposte:


1130

Hai almeno tre opzioni. Li ho presentati in ordine di preferenza d'uso.

Metodo 1 : è possibile utilizzare lo strumento SC (Sc.exe) incluso nel Resource Kit. (incluso con Windows 7/8)

Apri un prompt dei comandi ed entra

sc delete <service-name>

Lo snippet di aiuto dello strumento è il seguente:

DESCRIPTION:
        SC is a command line program used for communicating with the
        NT Service Controller and services.

delete----------Deletes a service (from the registry).

Metodo 2 : utilizzare delserv

Scarica e usa l'utilità della riga di comando delserv. Questo è uno strumento legacy sviluppato per Windows 2000. Nelle attuali caselle di Windows XP questo è stato sostituito da sc descritto nel metodo 1.

Metodo 3 : elimina manualmente le voci di registro (tieni presente che ciò si ritorce contro Windows 7/8)

I servizi di Windows sono registrati con la seguente chiave di registro.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Cerca la sottochiave con il nome del servizio sotto la chiave indicata ed eliminala. (e potrebbe essere necessario riavviare per rimuovere completamente il servizio dall'elenco dei servizi)


23
Il metodo 3 sembra retrocedere su Windows 7.
rmiesen

29
Al metodo 1, è possibile che si verifichi l'errore "Il servizio specificato non esiste come servizio installato", sebbene si veda il servizio in MMC !!! Questo perché il nome che vedi è DisplayName. Si può ricerca il nome del servizio effettivo al albero HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services e passare che il servizio-nome.
denispyr,

9
Il metodo 3 è fallito anche per me su Windows 7. Il servizio è ora disponibile con la descrizione<Failed to Read Description. Error Code: 2>
Zugwalt

27
nota se stai usando powershell con sc - sostituisce l'applicazione con il suo cmdlet set-content e se esegui sc delete blah fallisce silenziosamente
JonnyRaa

10
NOTA: è necessario riavviare il computer dopo aver eseguito il metodo 3! Quindi guarda l'elenco dei servizi; probabilmente è andato adesso. Se è ancora nell'elenco, fai semplicemente il Metodo 1 per rimuoverlo da quell'elenco.
East of Nowhere,

170

Dal prompt dei comandi, utilizzare l'utilità "sc.exe" di Windows. Eseguirai qualcosa del genere:

sc delete <service-name>

21
Se è presente uno spazio nel nome del servizio, racchiuderlo tra virgolette doppie.
geoffc,

2
Perché ricevo [SC] OpenService non riuscito 5: accesso negato.
Adrian Enriquez,

11
@AdrianEnriquez, eseguendo cmd.exe come admin ha risolto questo problema per me.
Foldlettuce

3
In Windows 8 dopo aver utilizzato il comando, il servizio appare con stato disabilitato nell'elenco MMC. Un riavvio eliminerà il servizio dall'elenco.
Ryan,

1
C'è un modo per elevare i privilegi per questo? Ottengo ancora "Accesso negato" dopo aver digitato il comando sopra
Nick

27

Note sull'uso di "sc delete" in Windows 8:

1) Aprire una finestra CMD con privilegi elevati. [Windows Key-X per visualizzare un menu con l'opzione; seleziona "Prompt dei comandi (Admin)".]
2) Usa il nome tra parentesi dall'elenco in Servizi [ad esempio, ho usato "sc delete gupdate" quando, in Servizi, diceva "Google Update (gupdate)"]


22

Alcune persone citano sc deletecome risposta. È così che l'ho fatto, ma mi ci è voluto un po 'per trovare il <service-name>parametro.

Il comando sc query type= service(nota, è molto particolare con la formattazione, lo spazio prima del "servizio" è necessario) produrrà un elenco di servizi Windows installati, completo del loro nome qualificato da usare con il sc delete <service-name>comando.

L'elenco è piuttosto lungo, quindi puoi prendere in considerazione il piping dell'output in un file di testo (ad es. >> C:\test.txt) E poi cercarlo.

È SERVICE_NAMEquello da usare con il sc delete <service-name>comando.


2
Vedi il mio commento sulla risposta accettata. Il nome del servizio può essere determinato rapidamente guardando la scheda Proprietà per il servizio nel pannello Servizi.
donperk,

2
Che è stato tutto inutile: se si fanno vedere nella lista dei servizi, si può solo aprire le proprietà dei servizi che si desidera rimuovere dall'elenco dei servizi, nella lista dei servizi, e vi mostrerà il nome del servizio. Il "nome del servizio" elencato nelle proprietà ha anche lo stesso nome del servizio. :)
neminem,

2
Sì, lo so che puoi arrivare al nome con altri mezzi. Ho aggiunto questo perché ho avuto difficoltà a capire quale dei nomi usare nel comando. Avevo visto il nome elencato nelle proprietà del servizio, ma al momento non sapevo che fosse il nome da usare nel comando. L'utilizzo della riga di comando è stato un buon modo per scaricare tutti i servizi installati, incluso <nome_servizio> da utilizzare per rimuovere. Avevo un paio di servizi che ne avevano bisogno, quindi è stato più facile scaricare l'intero elenco su file in modo da poterli raggiungere senza doverlo cercare nello snap-in dei servizi.
Robin French,

Puoi semplicemente eseguire sc querycome predefinito type= service.
Ian Kemp,

11

Rimuovere il servizio di Windows tramite il registro

È molto facile rimuovere un servizio dal registro se si conosce la strada giusta. Ecco come l'ho fatto:

  1. Esegui Regedit o Regedt32

  2. Vai alla voce di registro "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services"

  3. Cerca il servizio che desideri eliminare ed eliminalo. Puoi guardare le chiavi per sapere quali file utilizzavano il servizio ed eliminarle (se necessario).

Elimina il servizio Windows dalla finestra dei comandi

In alternativa, puoi anche usare il prompt dei comandi ed eliminare un servizio usando il comando seguente:

sc delete

Puoi anche creare un servizio usando il seguente comando

sc create "MorganTechService" binpath = "C: \ Programmi \ MorganTechSPace \ myservice.exe"

Nota: potrebbe essere necessario riavviare il sistema per ottenere l'elenco aggiornato in Service Manager.


9

Se si desidera utilizzare uno strumento per esso, è possibile utilizzare Process Hacker

Modulo per creare il servizio:

Hacker di processo Crea servizio

Menu di scelta rapida su un servizio per eliminarlo:

Process Hacker Delete Service

Trovo Process Hacker uno strumento più comodo per gestire i processi e i servizi di Windows rispetto al Taskmgr.exe di Windows. Soprattutto su Windows XP, dove non è possibile accedere ai servizi da Task Manager.


4

Avevo bisogno di reinstallare il mio servizio Tomcat, il che significava innanzitutto rimuoverlo. Questo ha funzionato per me:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(modifica il file t.txt, cerca nell'elenco e trova il servizio Tomcat. Si chiama Tomcat7)

sc delete Tomcat7

TUTTAVIA, il comando query non ha funzionato la prima volta, perché il servizio tomcat non era in esecuzione. Sembra elencare solo i servizi in esecuzione. Ho dovuto avviare il servizio ed eseguire nuovamente il comando query.


Se si desidera visualizzare i servizi arrestati, utilizzare il stateparametro
Harry Johnston,

3

Se i file Service .InstallLog e .InstallState originali sono ancora nella cartella, puoi provare a reinstallare il file eseguibile per sostituire i file, quindi utilizzare InstallUtil / u, quindi disinstallare il programma. È un po 'contorto, ma ha funzionato in un caso particolare per me.


3

Puoi provare ad eseguire Autoruns , il che ti salverebbe dal dover modificare manualmente il registro. Ciò è particolarmente utile quando non si dispone delle autorizzazioni necessarie.


0

1o passaggio: passa alla directory in cui è presente il tuo servizio

Comando: cd c: \ xxx \ yyy \ service

2 ° passaggio: immettere il comando seguente

Comando: C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ InstallUtil.exe service.exe \ u

Qui service.exe è il tuo exe di servizio e \ u disinstallerà il servizio. vedrai il messaggio "La disinstallazione è stata completata".

Se si desidera installare un servizio, rimuovere \ u nel comando sopra che installerà il servizio


3
L'OP ha chiaramente affermato che i file originali sono stati eliminati.
Dopo

0

Abbiamo scoperto che anche se esegui sc_delete, potrebbe esserci una voce rimanente nel registro per il tuo servizio, in modo che la reinstallazione del servizio comporti un set corrotto di voci di registro (che non corrispondono). Ciò che abbiamo fatto è stato regeditrimuovere manualmente questa voce rimanente.

Nota: ShipmunkService viene ancora visualizzato dopo sc_delete!

Quindi è possibile reinstallare e il servizio verrà eseguito correttamente. Buona fortuna a tutti voi e che la forza sia con voi.


0

Puoi disinstallare il tuo servizio Windows dal prompt dei comandi anche solo scrivere questo pezzo di comando

cd\                                                                   

cd C:\Windows\Microsoft.NET\Framework\v4.0.30319(or version in which you developed your service)                                           

installutil c:\\xxx.exe(physical path of your service) -d

0

-Windows+r apri cmd.

-sc YourSeviceName questo codice rimuove il tuo servizio.

-Uninstal "YourService Path" questo codice disinstalla il tuo servizio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.