Verificando um serviço não registrado/ausente
-
21-09-2019 - |
Pergunta
Como posso usar o ServiceController para me dizer se um serviço foi registrado ou não? No fragmento de código abaixo, a verificação de um nome de exibição nula resulta em um sistema.InValidOperationException.
Existe uma maneira direta de fazer isso que estou perdendo completamente?
ServiceController sc = new ServiceController("TestService");
if (sc.DisplayName == null)
{
// unregistered or missing service
}
Solução
Veja a solução abaixo ... Não parece que você pode ...
De documentos:
Você pode usar a classe ServiceController para se conectar e controlar o comportamento dos serviços existentes.
Que se lê como serviços já devem ser registrados para que o ServiceController trabalhe com eles.
Eu acho que você poderia simplesmente pegar a exceção (indicando o serviço não existe), mas isso não parece ser realmente excepcional?
Solução:
Usar
var services = ServiceController.GetServices(machineName)
e pesquise a matriz pelos serviços necessários. Se você está apenas trabalhando em sua caixa local, você pode omitir o machineName
argumento.