Come disinstallare un servizio di Windows quando sul sistema non è rimasto alcun eseguibile?


166

Come si disinstalla un servizio Windows quando non è possibile eseguirlo sul sistema? Non riesco a correre installutil -udal momento che sul sistema non è disponibile eseguibile. Riesco ancora a vedere una voce per il servizio nella console dei servizi.

Il motivo di questo stato è probabilmente a causa di un problema nel pacchetto msi che non rimuove correttamente il servizio, ma come posso ripararlo una volta che il servizio è in questo stato?


Risposte:


325

Dovresti essere in grado di disinstallarlo utilizzando sc.exe (penso che sia incluso nel Resource Kit di Windows) eseguendo quanto segue nel prompt dei comandi "amministratore":

sc.exe delete <service name>

dove si <service name>trova il nome del servizio stesso come lo vedi nella console di gestione del servizio, non dell'exe.

Puoi trovare sc.exe nella cartella Sistema e ha bisogno dei privilegi di amministratore per funzionare. Ulteriori informazioni in questo articolo di Microsoft KB .

In alternativa, è possibile chiamare direttamente l' API DeleteService () . In questo modo è un po 'più complesso, dal momento che è necessario ottenere un controllo per il responsabile del controllo del servizio tramite OpenSCManager () e così via, ma d'altra parte ti dà un maggiore controllo su ciò che sta accadendo.


Ha fatto esattamente quello che volevo e ha rimosso il servizio dal registro. Non viene più visualizzato nella console dei servizi. Grazie!
Magnus Lindhe,

Ottengo "Accesso negato". Cosa fare dopo?
Nick

4
Solo una nota per chiunque cerchi di eseguire il comando nel Metodo 1 in PowerShell: sc non è per comunicare con il gestore controllo servizi. È il comando Set-Content. Utilizzare invece sc.exe.
Yasser Sinjab,

1
Se ricevi l'errore 1072, assicurati di non avere il pannello di controllo dei servizi aperto (vedi questa altra domanda )
Giles

Stavo ottenendo l'errore di seguito. [SC] OpenService FAILED 1060: il servizio specificato non esiste come servizio installato. Più tardi ha provato lo stesso con Power Shell e funziona!
crazydan,

24

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.


3
Farlo nel registro è sicuro? Il "risultato finale" del registro è uguale al "risultato finale" di sc delete?
Pacerier,

5
No, ho appena provato a cancellare un servizio direttamente da regedit. Di conseguenza, ora la voce del servizio che volevo eliminata rimane in Servizio, mentre la Descrizione mostra: "<Impossibile leggere la descrizione. Codice errore: 2>"
GJ.

11

trovato qui

Ho appena provato su Windows XP, ha funzionato

computer locale: sc \\. elimina [nome-servizio]

  Deleting services in Windows Server 2003

  We can use sc.exe in the Windows Server 2003 to control services, create services and delete services. Since some people thought they must directly modify the registry to delete a service, I would like to share how to use sc.exe to delete a service without directly modifying the registry so that decreased the possibility for system failures.

  To delete a service: 

  Click “start“ - “run“, and then enter “cmd“ to open Microsoft Command Console.

  Enter command:

  sc servername delete servicename

  For instance, sc \\dc delete myservice

  (Note: In this example, dc is my Domain Controller Server name, which is not the local machine, myservice is the name of the service I want to delete on the DC server.)

  Below is the official help of all sc functions:

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

10

Ecco lo script PowerShell per eliminare un servizio foo

$foo= Get-WmiObject -Class Win32_Service -Filter "Name='foo'"
$foo.delete()


3

Creare una copia degli eseguibili dello stesso servizio e incollarlo sullo stesso percorso del servizio esistente, quindi disinstallarlo.


Questo è un buon suggerimento. Se il problema persiste, potrebbe essere necessario reinstallare, eseguire installutil -u e quindi disinstallare
wcm,

dobbiamo creare la copia dello stesso exe o rinominare qualsiasi altro file funzionerebbe bene?
Imran Rizvi,

@Samiksha, pensavo avesse detto che non aveva " una copia degli eseguibili "?
Pacerier,

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.