Como desinstalo um serviço do Windows se os arquivos não existem mais?

570

Como eu desinstalo um Serviço .NET do Windows, se os arquivos de serviço não existirem mais?

Eu instalei um serviço .NET do Windows usando o InstallUtil. Desde então, excluí os arquivos, mas esqueci de executar

 InstallUtil /u

primeiro. Portanto, o serviço ainda está listado no MMC de serviços.

Eu tenho que entrar no registro? Ou há uma maneira melhor?

Thomas Jespersen
fonte
3
Delserv
Tom Kidd
2
Você também parou o serviço primeiro? (-> net stop yourservice)
Jos
Um tópico muito relacionado aqui .
RBT
este site ajuda-me e espero que irá ajudá-lo neste problema howtogeek.com/howto/windows-vista/...
Ahmed Elbendary

Respostas:

1130

Você tem pelo menos três opções. Eu os apresentei em ordem de preferência de uso.

Método 1 - você pode usar a ferramenta SC (Sc.exe) incluída no Resource Kit. (incluído no Windows 7/8)

Abra um prompt de comando e insira

sc delete <service-name>

O snippet de ajuda da ferramenta a seguir:

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

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

Método 2 - use delserv

Faça o download e use o utilitário de linha de comando delserv. Esta é uma ferramenta herdada desenvolvida para o Windows 2000. Nas caixas atuais do Windows XP, isso foi substituído pelo sc descrito no método 1.

Método 3 - excluir manualmente as entradas do registro (observe que isso sai pela culatra no Windows 7/8)

Os serviços do Windows são registrados sob a seguinte chave do Registro.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

Procure a subchave com o nome do serviço na chave referida e exclua-a. (e pode ser necessário reiniciar para remover completamente o serviço da lista Serviços)

Jorge Ferreira
fonte
23
Método 3 parece back-fogo no Windows 7.
rmiesen
29
No método 1, você pode enfrentar o erro "O serviço especificado não existe como serviço instalado", embora você veja o serviço no MMC !!! Isso ocorre porque o nome que você vê é o DisplayName. Você pode procurar o nome do serviço real na árvore HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services e passá- lo como nome do serviço.
Denispyr
9
Método 3 saiu pela culatra para mim também no Windows 7. O serviço é lá agora com a descrição<Failed to Read Description. Error Code: 2>
Zugwalt
27
Nota Cuidado se você estiver usando PowerShell com sc - ele substitui a aplicação com o seu cmdlet set-content e se você executar sc blá excluí-lo silenciosamente falhar
JonnyRaa
10
NOTA: Você precisa reiniciar o computador após executar o Método 3! Então olhe para a lista de serviços; provavelmente já se foi agora. Se ainda estiver na lista, execute o Método 1 para removê-lo dessa lista.
East of Nowhere
170

No prompt de comando, use o utilitário "sc.exe" do Windows. Você executará algo como isto:

sc delete <service-name>
Dean Hill
fonte
21
Se houver um espaço no nome do serviço, coloque-o entre aspas duplas.
#
2
Por que estou recebendo o [SC] OpenService Failed 5: Acesso negado.
Adrian Enriquez
11
@AdrianEnriquez, executando o cmd.exe como administrador, corrigiu isso para mim.
precisa saber é o seguinte
3
No Windows 8, após o uso do comando, o serviço aparece com o status desativado na lista MMC. Uma reinicialização eliminará o serviço da lista.
Ryan
1
Existe uma maneira de elevar os privilégios para isso? Eu ainda recebo "Acesso negado" depois de digitar o comando acima
Nick
27

Notas sobre o uso de "sc delete" no Windows 8:

1) Abra uma janela CMD com privilégios elevados. [Windows Key-X para abrir um menu com a opção; selecione "Prompt de comando (administrador)".]
2) Use o nome entre parênteses da lista em Serviços [por exemplo, usei "sc delete gupdate" quando, em Serviços, ele lia "Google Update (gupdate)"]

Michael
fonte
22

Algumas pessoas mencionando sc deletecomo resposta. Foi assim que fiz, mas levei um tempo para encontrar o <service-name>parâmetro.

O comando sc query type= service(observe, é muito particular na formatação, o espaço antes do "serviço" ser necessário) exibirá uma lista de serviços do Windows instalados, completos com o nome qualificado para serem usados ​​com o sc delete <service-name>comando.

A lista é bastante longa, portanto, você pode considerar canalizar a saída para um arquivo de texto (ou seja >> C:\test.txt) e depois pesquisar por isso.

Esse SERVICE_NAMEé o único a ser usado com o sc delete <service-name>comando

Robin French
fonte
2
Veja meu comentário sobre a resposta aceita. O nome do serviço pode ser determinado rapidamente, consultando a folha Propriedades do serviço no painel Serviços.
donperk
2
Isso foi totalmente desnecessário: se eles aparecerem na lista de serviços, você pode simplesmente abrir as propriedades dos serviços que deseja remover da lista de serviços, na lista de serviços, e ele mostrará o nome do serviço. O "nome do serviço" listado nas propriedades também possui o mesmo nome de serviço. :)
neminem
2
Sim, eu sei que você pode chegar ao nome por outros meios. Eu adicionei isso porque tive problemas para descobrir qual dos nomes usar no comando. Eu tinha visto o nome listado nas propriedades do serviço, mas não sabia na época esse o nome a ser usado no comando. Usar a linha de comando foi uma boa maneira de despejar todos os serviços instalados, incluindo o <service_name> a ser usado para remover. Eu tinha alguns serviços que precisavam disso, para que fosse mais fácil despejar a lista inteira em arquivo para que eu pudesse acessá-los sem precisar procurar no snap-in de serviços.
Robin French
Você pode simplesmente executar sc queryconforme o padrão type= service.
Ian Kemp
11

Remover serviço do Windows via registro

É muito fácil remover um serviço do registro, se você souber o caminho certo. Aqui está como eu fiz isso:

  1. Execute o Regedit ou o Regedt32

  2. Vá para a entrada do registro "HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services"

  3. Procure o serviço que você deseja excluir e exclua. Você pode consultar as chaves para saber quais arquivos o serviço estava usando e excluí-las também (se necessário).

Excluir serviço do Windows via janela de comando

Como alternativa, você também pode usar o prompt de comando e excluir um serviço usando o seguinte comando:

sc delete

Você também pode criar um serviço usando o seguinte comando

sc cria "MorganTechService" binpath = "C: \ Arquivos de Programas \ MorganTechSPace \ myservice.exe"

Nota: Pode ser necessário reiniciar o sistema para atualizar a lista no gerenciador de serviços.

kombsh
fonte
9

Se você deseja usar uma ferramenta, use o Process Hacker

Formulário para criar o serviço:

Serviço de criação de hackers de processo

Menu de contexto em um serviço para excluí-lo:

Serviço de Exclusão do Hacker de Processo

Acho o Process Hacker uma ferramenta mais conveniente para gerenciar processos e serviços do Windows do que o próprio Taskmgr.exe do Windows. Especialmente no Windows XP, onde você não pode acessar serviços do gerenciador de tarefas.

Mike de Klerk
fonte
4

Eu precisava reinstalar meu serviço tomcat, o que significava removê-lo primeiro. Isso funcionou para mim:

Start a command prompt window using run as administrator

sc query type= service >t.txt

(edite o arquivo t.txt, pesquise na lista e encontre o serviço tomcat. Chama-se Tomcat7)

sc delete Tomcat7

NO ENTANTO, o comando query não funcionou na primeira vez, porque o serviço tomcat não estava sendo executado. Parece listar apenas os serviços em execução. Eu tive que iniciar o serviço e executar o comando query novamente.

user1208639
fonte
Se você deseja ver os serviços interrompidos, use o stateparâmetro
Harry Johnston
3

Se os arquivos .InstallLog e .InstallState originais do serviço ainda estiverem na pasta, tente reinstalar o executável para substituir os arquivos, use InstallUtil / u e desinstale o programa. É um pouco complicado, mas funcionou em um exemplo específico para mim.

ja928
fonte
3

Você pode tentar executar o Autoruns , o que evita que você precise editar o registro manualmente. Isso é especialmente útil quando você não possui as permissões necessárias.

bronzeado
fonte
0

1º passo: vá para o diretório em que seu serviço está presente

Comando: cd c: \ xxx \ yyy \ service

2º Passo: Digite o comando abaixo

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

Aqui service.exe é o seu serviço exe e \ u desinstalará o serviço. você verá a mensagem "A desinstalação concluída".

Se você deseja instalar um serviço, remova \ u no comando acima, que instalará seu serviço

Sree
fonte
3
O OP disse claramente que os arquivos originais foram excluídos.
AFract
0

Descobrimos que, mesmo se você executar sc_delete, pode haver uma entrada no registro do seu serviço, para que a reinstalação do serviço resulte em um conjunto corrompido de entradas do registro (elas não coincidem). O que fizemos foi regeditremover e remover essa entrada restante manualmente.

Nota: ShipmunkService ainda está aparecendo após sc_delete!

Em seguida, você pode reinstalar e seu serviço será executado corretamente. Boa sorte a todos, e que a força esteja com vocês.

Barclay
fonte
0

Você pode desinstalar o serviço Windows pelo prompt de comando e também escrever este 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
Amarjit Singh Chaudhary
fonte
0

-Windows+r cmd aberto.

-sc YourSeviceName esse código remove seu serviço.

-Uninstal "YourService Path" esse código desinstala seu serviço.

Ayse Özbek
fonte