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
}
Foi útil?

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.

http://msdn.microsoft.com/en-us/library/s21fd6th.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top