De qual serviço devo depender o meu?

1

Eu quero adicionar uma dependência ao meu serviço para que ele só tente iniciar após a maioria dos serviços do Windows terem sido iniciados. Alguém pode recomendar tal serviço que é improvável que tenha sido desativado por razões de segurança em sites corporativos. Como o meu serviço precisa dos serviços de rede em funcionamento, quero ter certeza de que o meu comece depois deles. Esse serviço também pode ser implantado em ambientes não corporativos, por isso, estou procurando um serviço adequado que provavelmente não tenha sido desativado pelo usuário final.

    
por quack quixote 06.11.2009 / 15:42

3 respostas

2

Use o Agendador de Tarefas do Windows para iniciar seu aplicativo. Não adicione uma dependência a ele. Isso faria sentido se o aplicativo realmente tivesse tal dependência. Mas como isso não é uma dependência formal, não é a coisa correta a se fazer.

Além disso, você não pode garantir a ordem de execução dos serviços do Windows . Somente aqueles que possuem as próprias regras de dependência têm a garantia de serem executados em uma ordem específica. Todos os outros não são. O que significa que durante o curso de várias reinicializações, o último serviço do Windows a ser executado pode variar.

Em vez disso, sob o Agendador de Tarefas, você pode definir sua tarefa para executar somente se um usuário estiver conectado, executá-lo apenas uma vez e criar um acionador para atrasar a execução da tarefa em alguns segundos.

10 ou 20 segundos são suficientes para garantir que a tarefa seja executada por último ou quase até o último, configurando-a para ser executada somente após o login do usuário.

No entanto, você pode pesquisar seus logs do Visualizador de Eventos como base para uma regra do Planejador de Tarefas. "Só corra após este evento ser disparado".

    
por 06.11.2009 / 16:20
1

Você diz que seu serviço "precisa de serviços de rede em funcionamento". Mas isso realmente? Será necessário apenas que os vários serviços relacionados a IP sejam executados mesmo que não tenham link ou endereço IP válido?

Ou o seu serviço realmente espera poder conectar-se instantaneamente a um serviço externo logo que é iniciado? E se sim, o que acontece se esse serviço externo estiver inoperante? O que acontece se houver problemas de conectividade de rede em algum ponto da rota? Desiste e falha ou pára?

Na minha experiência, na maioria das vezes, quando as pessoas escrevem serviços e tentam torná-los dependentes de outros serviços internos, o que eles estão realmente fazendo é evitar ter que escrever código de tratamento de erros adequado. Não sei o que seu serviço realmente faz, por isso não posso oferecer conselhos sobre como lidar com a infinidade de maneiras pelas quais a conectividade de rede não estaria funcionando, mesmo que os serviços locais estejam funcionando. Mas você deve realmente pensar em por que acha que seu serviço precisa dessa dependência. Não existe uma maneira melhor de escrevê-lo para que você possa lidar com a condição em que a rede não está disponível?

    
por 06.11.2009 / 18:38
0

Eu sugeriria o serviço Windows Update. É muito improvável que tenha sido desativado.

No Vista e no Windows 7, ele é definido como "Automatic (Delayed Start)" (início automático), por isso vai começar bem depois de todos os outros serviços.

    
por 06.11.2009 / 16:24