Tento remover um serviço do Windows sc delete <service name>
e encontro o seguinte erro:
[SC] DeleteService FAILED 1072:
O serviço especificado foi marcado para exclusão.
O que eu já fiz:
Parou o serviço, obviamente. O
sc queryex "<service name>"
resultado é o seguinte:SERVICE_NAME: Stub service TYPE : 10 WIN32_OWN_PROCESS STATE : 1 STOPPED WIN32_EXIT_CODE : 1067 (0x42b) SERVICE_EXIT_CODE : 0 (0x0) CHECKPOINT : 0x0 WAIT_HINT : 0x0 PID : 0 FLAGS :
Garantiu que o Microsoft Management Console esteja fechado (
taskkill /F /IM mmc.exe
),-
Devido a essa remoção,
services.msc
ainda mostra o serviço (com um nome, mas sem status ou tipo de inicialização), mas a descrição é “<Falha ao ler a descrição. Código de erro: 2> ”. Ao tentar visualizar as propriedades, "O sistema não consegue encontrar o arquivo especificado". é mostrado cinco vezes.
O problema persiste.
Qual é o próximo passo?
windows-services
Arseni Mourzenko
fonte
fonte
Respostas:
Pode haver várias causas que levam ao serviço ser bloqueado em "marcado para exclusão".
O Process Explorer da SysInternals é aberto . O fechamento deve levar à remoção automática do serviço.
O Gerenciador de tarefas é aberto .
O Console de Gerenciamento Microsoft (MMC) é aberto . Para garantir que todas as instâncias estejam fechadas, execute
taskkill /F /IM mmc.exe
.O console de serviços é aberto . É o mesmo que o ponto anterior, pois o console de Serviços é hospedado pelo MMC.
O Visualizador de Eventos é aberto . Novamente, é o mesmo que o terceiro ponto.
A chave HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ {nome do serviço} existe .
Outra pessoa está conectada ao servidor e tem um dos aplicativos mencionados anteriormente aberto.
Uma instância do Visual Studio usada para depurar o serviço está aberta.
fonte
Isso também pode ser causado ao deixar o console de serviços aberto. O Windows não excluirá o serviço até que ele seja fechado.
fonte
Eu tive o mesmo problema, finalmente eu decidi matar o processo de serviço.
para isso, tente as etapas abaixo:
obter o ID do processo de serviço com
sc queryex <service name>
matar processo com
taskkill /F /PID <Service PID>
fonte
No meu caso, funcionou após o fechamento do
Services
. Verifique se oServices.msc
está aberto, se sim, feche-o e verifique se há algum processo de serviço emTask Manager
.fonte
Isso significa que o serviço ainda está listado como desativado em services.msc. Apenas feche o services.msc e abra como administrador ... O serviço não será listado. Agora, instale o serviço usando o comando
installutil "caminho do serviço"
fonte
A exclusão das chaves do registro, conforme sugerido acima, interrompeu o serviço no estado de parada. O procedimento a seguir funcionou para mim:
abra o gerenciador de tarefas> selecione a guia serviços> selecione o serviço> clique com o botão direito e selecione "ir para o processo"> clique com o botão direito do mouse no processo e selecione Finalizar processo
O serviço deve sair depois disso
fonte
Descobriu mais uma coisa a ser verificada - veja no Gerenciador de tarefas - se outros usuários estiverem conectados a essa caixa, mesmo se estiverem 'desconectados', você precisará realmente desconectá-los para que o serviço seja finalmente excluído.
fonte
Parece que nas versões do Windows posteriores ao Windows 7 (não verificadas, mas pela experiência mais recente do Windows Server 2012 R2), o Service Control Manager (SCM) é mais rigoroso.
Enquanto no Windows 7 ele gera outro processo, agora está verificando se o processo do serviço ainda está por aí e pode retornar ERROR_SERVICE_MARKED_FOR_DELETE (1072) para qualquer chamada subsequente ao CreateService / DeleteService, mesmo que o serviço pareça estar parado.
Estou falando do código da API do Windows aqui, mas quero descrever claramente o que está acontecendo, portanto, essa sequência pode levar ao erro mencionado:
A razão pela qual um processo de serviço ainda existe após já ter relatado seu estado SERVICE_STOPPED não é surpreendente. É um processo regular, cuja thread principal está 'presa' em sua chamada para o
StartServiceCtrlDispatcher
API, para que ele reaja primeiro a uma ação de controle de parada, mas depois execute sua sequência de código restante.É meio lamentável que o SCM / OS não esteja lidando com isso adequadamente para nós. Uma solução programática é meio simples e precisa: obtenha o identificador de processo do executável do serviço antes de interromper o serviço e aguarde até que esse identificador seja sinalizado.
Ao abordar o problema da perspectiva da administração do sistema, a solução é também aguardar o processo de serviço desaparecer completamente.
fonte
Foi o que funcionou para mim: - Caí no mesmo problema: meu serviço estava preso em 'marcado para exclusão'. - Abri services.msc Meu serviço apareceu como em execução, embora já tenha sido desinstalado. - Cliquei em Parar recebeu uma mensagem de erro, dizendo que o serviço não está em um estado para receber mensagens de controle. No entanto, o serviço foi interrompido. - Serviços fechados.msc. - Services.msc reaberto. - O serviço foi desativado (não aparece mais na lista de serviços).
(O ambiente era o Windows 7.)
fonte
No meu caso, eu executo
taskkill /f /im dongleserver.exe
, ondedongleserver.exe
está o arquivo exe do meu programa.Então já consigo reinstalar o meu programa.
fonte
No meu caso, foi causado por exceção não tratada ao criar a fonte eventLog. Use try catch para identificar a causa.
fonte
Fechar todas as janelas que estavam abertas no momento e executar o seguinte comando resolveu o problema para mim:
fonte
Fechar o console de serviços, conforme sugerido por algumas das respostas aqui, me permitiu remover o serviço. No meu cenário, isso foi apenas uma correção de curto prazo, pois todas as reinstalações e remoções subseqüentes do serviço exigiriam que eu tomasse essas etapas adicionais. Revendo meu arquivo web.config, foi descoberto que havia um erro que, uma vez corrigido, me permitia remover facilmente o serviço sem o fechamento adicional da etapa do console de serviços.
fonte
Isso funciona para mim.
A árvore Finalizar processo encerrará o processo e todos os processos criados pelo processo.
Em seguida, você pode reinstalar o serviço.
fonte
No meu caso, o nome do serviço era 'Monitor', que também é usado por um serviço do Windows chamado 'Monitor', quando tentei atualizar meus serviços, tentei desinstalá-los, o instalador tentou remover o serviço 'Monitor' do Windows, que não podia, e a instalação era sempre revertida.
Acabei renomeando meu serviço para outra coisa
fonte
Se as etapas fornecidas pelo @MainMa não funcionarem, siga as etapas a seguir
Etapa 1 Tente matar o processo no gerenciador de tarefas do Windows ou use o taskkill / F / PID. Você pode encontrar o pid do processo pelo comando 'sc queryex'. Tente o próximo passo se você ainda não conseguir desinstalar.
Etapa 2 Se acima
Execute o Autoruns para Windows Procure o serviço por nome e exclua os resultados.
fonte
O principal motivo do erro é que o processo não está parado. para resolvê-lo, inicie o gerenciador de tarefas, vá para serviços e veja se você ainda pode ver seu serviço, depois vá para o processo desse serviço e finalize. Do que a questão será resolvida completamente.
fonte
Eu estava tendo esse problema quando estava usando o Application Verifier para verificar meu serviço vencedor. Mesmo depois que fechei o App Ver, meu serviço foi bloqueado para exclusão. Somente a remoção do serviço do App Ver resolveu o problema e o serviço foi excluído imediatamente. Parece que algum processo ainda está usando seu serviço depois que você tentou excluir um.
fonte
passos a seguir:
etapa 1 - vá para o local C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
comando de execução da etapa 2 : installutil / u caminho completo / servicename.exe
etapa 3 feche o painel de serviços e abra-o novamente
comando de execução da etapa 4 : installutil full-path / servicename.exe
fonte
Provavelmente, a exclusão do serviço falha porque
lançar erro ao parar um serviço. agrupar as coisas dentro de uma captura de tentativa evitará a marca de erro de exclusão
}
fonte
Às vezes, isso pode acontecer durante a exclusão do serviço via script de sessão remota do PowerShell, especialmente quando você está tentando excluir o serviço várias vezes. Nesse caso, tente recriar uma sessão antes da exclusão:
fonte