Janeiro 15, 2022

Criação de um Serviço do Windows VB.NET

Ambiente: .NET, Visual Basic

Introdução

Você quer escrever um aplicativo que monitora constantemente a alguns arquivos, cria um log, ou seja o que for, e que correu constantemente no plano de fundo enquanto a máquina está ocupado fazendo alguma outra coisa. A melhor maneira de fazer isso era executar um aplicativo do Windows continuamente ou em um intervalo regular com o uso do agendador do Windows. Mas havia uma grande desvantagem: alguém tinha que fazer logon no sistema para iniciar este aplicativo.

isso não é mais um problema, porque a melhor maneira de fazer tudo isso é criar um serviço do Windows para Windows 2000/Windows NT.

o que é o serviço Windows (anteriormente chamado de serviço NT)?

a função principal de um serviço do Windows é executar um aplicativo em segundo plano. Algumas coisas que os tornam diferentes de um aplicativo do Windows são que um serviço do Windows é iniciado antes que qualquer usuário faça logon no sistema (se ele tiver sido configurado para iniciar na inicialização). O serviço pode ser configurado de forma que exija que o usuário o inicie manualmente.

além disso, o serviço Windows tem seu próprio processo; portanto, ele é executado de forma muito eficiente. Normalmente, um serviço do Windows não terá uma interface de usuário pelo simples motivo de poder ser executado mesmo que ninguém esteja conectado ao sistema. Esta não é uma regra; você ainda pode ter um serviço do Windows com uma interface de usuário.

no Windows 2000, você pode visualizar todos os Serviços em execução no seu computador abrindo o painel de Controle, Ferramentas Administrativas e clicando em serviços.

Criando um serviço do Windows em VB.NET

antes do VB.NET, criar um serviço Windows foi muito trabalho. Você teve que usar algum procedimento de nível de sistema que não era muito fácil, mas graças a VB.NET isso se tornou muito fácil. Agora vamos aprender como criar um serviço do Windows.

você deve saber algumas coisas antes de mergulhar. O serviço do Windows não está disponível no Windows 95, 98 ou eu. Você precisa ter o Windows NT ou o Windows 2000 para executar serviços.

a vantagem de usar. NET é que o framework incorpora todas as classes. Isso nos ajudará a criar, instalar e controlar o serviço do Windows.

abra seu Visual Studio .NET, crie um novo projeto de Serviço do Windows, que chamaremos de MyService e clique em OK.

adicione o Controle Do Temporizador da barra de ferramentas na guia Componentes. Na janela Propriedades do Timer1, altere a propriedade intervalo para 10000, que é de 10 segundos.

o código-fonte

Clique duas vezes no controle Timer1 para abrir uma janela de código para Timer1_Elapsed e digite o seguinte código. (Este código deve ser executado a cada 10 segundos.)

 Dim MyLog As New EventLog() ' create a new event log ' Check if the the Event Log Exists If Not MyLog.SourceExists("MyService") Then MyLog.CreateEventSource("MyService", "Myservice Log") ' Create Log End If MyLog.Source = "MyService" ' Write to the Log MyLog.WriteEntry("MyService Log", "This is log on " & _ CStr(TimeOfDay), _ EventLogEntryType.Information)

digite o seguinte código no procedimento OnStart. (Este procedimento é chamado quando você inicia o serviço, que deve ativar o temporizador.)

 Timer1.Enabled = True

e digite o seguinte código no procedimento OnStop. (Este procedimento é chamado quando você parar o serviço, que deve desativar o temporizador.)

 Timer1.Enabled = False

nosso aplicativo agora está pronto, mas algumas coisas ainda precisam ser feitas antes de seguirmos em frente. Quando construímos este aplicativo, o executável criado não é um aplicativo do Windows; portanto, você não pode simplesmente clicar e executá-lo. Ele precisa ser instalado como um serviço, mas não se preocupe; não precisamos fazer isso manualmente. VB.Net tem uma facilidade para adicionar um instalador ao nosso programa e, em seguida, usar um utilitário para instalar o serviço.

adicionar instalador ao Projeto

abra o Service1.janela de design vb e clique com o botão direito e selecione a opção Adicionar instalador. Isso adiciona um projeto instalador, ProjectInstaller.vb, com dois controles, ServiceProcessInstaller1 e ServiceInstaller1, em nosso projeto existente.

selecione o Controle ServiceInstaller1 e abra a janela de propriedade. Altere as propriedades ServiceName e DisplayName para MyService. (Este é o nome que você deseja que apareça na lista de serviços no Services windows.)

selecione o Controle ServiceProcessInstaller1 e abra a janela de propriedade. Altere a propriedade da conta para LocalSystem. (Isso precisa ser especificado porque precisamos executar isso em nossa máquina local.)

agora é hora de construir o aplicativo e criar um executável. Selecione construir solução no menu construir para criar um executável com instruções de instalação para o serviço.

Instalando o serviço

para instalar este serviço, precisamos usar o programa InstallUtil, que é um utilitário.NET, para instalar o serviço Windows. Você pode encontrar isso na pasta C:\WINNT\Microsoft.NET\Framework\v1.0.3705. (isso pode ser diferente no seu computador, dependendo da versão que você está usando.)

Alternativamente, você pode executar o .NET Janela de Comando selecionando Iniciar, Programas, Microsoft Visual Studio .NET, Visual Studio .NET Tools, Visual Studio .NET Prompt de Comando. Isso define todos os caminhos necessários para você.

digite o seguinte comando nessa janela: InstallUtil C:\tgol\Myservice\Bin\Myservice.exe. (Este é o caminho para o executável do serviço que acabamos de criar. Lembra-te, VB.NET criou o executável na pasta Bin na pasta project. Por favor, certifique-se de alterar isso para o seu caminho executável.) Por favor, olhe para a mensagem e log para se certificar de que o serviço está instalado corretamente.

iniciar o serviço

executar um serviço e iniciar um serviço são duas coisas diferentes. Quando instalamos o serviço com InstallUtil, agora estamos executando o serviço, mas ainda não o iniciamos. Para visualizar e iniciar o serviço, abra o painel de controle. Abra Ferramentas Administrativas, clique em Serviços, localize MyService e clique com o botão direito do mouse e selecione Iniciar para iniciar este serviço.

agora nosso serviço começou. Abra o Visualizador de Eventos A Partir De Ferramentas Administrativas e clique no log do aplicativo para ver os logs criados pelo Serviço (MyService) a cada 10 segundos. (Se você não vir nenhum registro, clique em Atualizar . Você terá que se atualizar para ver os logs de eventos mais recentes.

Parar o Serviço de

Abra o Painel de Controle, abra Ferramentas Administrativas, clique em Serviços, clique com o botão direito do mouse MyService, e selecione parar para Parar o serviço.

Desinstalar o Service

Este procedimento é semelhante à instalação do serviço, mas agora vamos executar o InstallUtil com o Parâmetro /U, que desinstala o serviço:

InstallUtil /U C:\tgol\Myservice\Bin\Myservice.exe (ou caminho executável no seu computador). Por favor, olhe para a mensagem para confirmar que o serviço está desinstalado corretamente.

dicas

  • pare o serviço e feche a janela de serviço antes de instalar / desinstalar o serviço.
  • sempre desinstale / instale se você fizer alguma alteração no aplicativo de serviço.
  • tente evitar interface de usuário, Entradas e msgbox no aplicativo de Serviço.
  • Abrir ProjectInstaller.vb, selecione ServiceInstaller1 control e abra a janela propriedade. Altere a propriedade StartType Para automática se quiser iniciar o serviço automático.

conclusão

serviço do Windows é muitas vezes esquecido. Use o serviço do Windows em vez de um aplicativo padrão quando tiver que monitorar ou administrar algo em segundo plano. A única desvantagem é o procedimento de instalação, mas aposto que há aspectos mais positivos e negativos ao selecionar o serviço do Windows em aplicativos que executam o Windows Scheduler.

Deixe uma resposta

O seu endereço de email não será publicado.