24 de nov. de 2010
Instalando seu programa como “Serviço” no Windows
Bom pessoal,
Executar um programa como “Serviço” no Windows é uma maneira bem pratica de garantir que o mesmo sempre estará disponível quando a maquina sofrer um “reboot” inesperado ou mesmo quando estiver em manutenção e não seja possível fazer o login localmente (modo console), como no caso de servidores hospedados em data centers ou que sejam mantidos remotamente em filiais, por exemplo.
Além das vantagens de se ter um aplicativo iniciado automaticamente, os serviços do Windows nos oference o log de eventos, útil na hora de se detectar possíveis falhas do aplicativo. Além disso, como citado no paragrafo acima, não ficamos restritos a necessidade de alguém executar login no sistema, seja local ou remotamente para termos o aplicativo sendo executado.
Embora um serviço seja uma ótima maneira de se ter um aplicativo sendo executado na inicialização do sistema, nem todo aplicativo é um serviço , o que torna esse “sonho” meio distante, ou pelo menos, tornava. Existem varias maneiras de se ter um aplicativo rodando como serviço no Windows. Algumas pagas, algumas gratuitas e outras providas pela própria Microsoft. Aqui, explicarei duas maneiras de se faze-lo, uma delas através de uma ferramenta da Microsoft, e outra através de um aplicativo gratuito, o NT Service Installer.
1 - USANDO O WINDOWS NT RESOURCE KIT:
Esse tópico foi elaborado usando-se como base o artigo KB137890 da base de conhecimento da Microsoft, que nos ensina a criar serviços através do uso dos arquivos INSTSRV.EXE e SRVANY.EXE contidos no Windows NT Resource Kit. Como nem todas as plataformas possuem esse pack (disponível apenas para Windows NT), os arquivos citados podem ser baixados nos links apresentados no final dessa dica.
A primeira coisa que devemos fazer e colocar os arquivos INSTSRV.EXE e SRVANY.EXE dentro do diretório onde se encontra o aplicativo o qual desejamos adicionar como serviço. Em nosso caso, esses arquivos devem ser colocados dentro do mesmo diretório onde se encontra o aplicativo o qual deseja ter como serviço. Após esse procedimento, abra um prompt de comando (Iniciar + Executar + digite CMD e tecle Enter, ou clique em OK).
Suponhamos que o diretorio onde se encontram os aplicativos seja o C:\APLICATIVO\, e então, no prompt de comando, deveremos executar o seguinte:
C:\> C:\APLICATIVO\instsrv.exe “MEU_APLICATIVO” C:\APLICATIVO\srvany.exe
Tudo do jeito como mostrado, numa unica linha e com o nome desejado entre aspas. Não esqueça de levar em consideração o diretório do aplicativo, pois se não estiver apontando pro lugar correto, não irá iniciar o serviço.
Explicando:
O comando C:\APLICATIVO\instsrv.exe chama o aplicativo responsavel pela inserção do serviço, enquanto que o termo “MEU_APLICATIVO” será o nome usado para registra-lo (esse nome é apenas um exemplo, porem, o nome usado não pode conter espaços nem caracteres especiais. O nome que devera aparecer na lista de serviços podera ser editado, como explicarei depois). Por ultimo o comando C:\APLICATIVO\srvany.exe registrará o aplicativo SRVANY.EXE como responsável pela execução do serviço. Se o comando for executado corretamente, você tera uma mensagem como “THE SERVICE WAS SUCCESSFULLY ADDED! …”.
Nesse ponto, deveremos realizar algumas alterações no REGISTRO DO WINDOWS, e é recomendado que seja feito um backup do mesmo antes de prosseguirmos. Nesse ponto, você deverá navegar até chave localizada em “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MEU_SERVICO”.
Clique com botão direito sobre o nome do serviço e selecione a opção NOVO > CHAVE e de a ela o nome “Parameters” . Dentro da nova pasta “Parameters”, clique com botão direito novamente e vá em NOVO > Valor da Sequencia, e crie um parâmetro chamado “AppDirectory”. Clique sobre essa chave duas vezes e preencha o campo com o caminho que seria equivalente ao “Iniciar Em”, quando criamos os atalhos para o acesso a algum aplicativo.
Ainda nessa pasta, crie uma nova chave chamada “Application”, e com duplo clique sobre ela, preencha o campo com o caminho completo do executável, no nosso caso “C:\APLICATIVO\TESTE.exe”.
Agora, vá a pasta raiz do seu serviço, e localize a chave “DisplayName” e altere conforme achar conveniente. Essa chave será o nome de exibição do seu serviço. Pronto, seu serviço foi criado.
2 - CRIANDO O SERVIÇO ATRAVES DA FERRAMENTA NT SERVICE INSTALLER
Algumas pessoas, por não possuírem conhecimento muito avançado de informática, preferem ferramentas que facilitem o máximo possível suas tarefas no dia a dia. E por isso, irei explicar como proceder com a instalação do serviço utilizando uma ferramenta gratuita, chamada NT Service Installer, que será responsável pela criação do nosso serviço.
O primeiro passo é realizar o download da ferramenta, que poderá ser obtida no link apresentado no final do documento. Após baixar a ferramenta, instale com duplo clique sobre o executável, no famoso esquema “NEXT > NEXT > FINISH” das plataformas Windows. Após o programa instalado, você poderá acessa-lo através do menu localizado em “Iniciar > Programas > ServiceInstaller > Servinst”.
Com o aplicativo aberto, vamos a criação do nosso serviço, que deve ter os seguintes campos:
a) SERVICE NAME: nome do serviço a ser criado. Esse nome será usado apenas para registrar o serviço.
b) DISPLAY NAME: nome que será exibido no menu de serviços do Windows.
c) STARTUP: modo de inicialização do serviço. Em nosso caso, onde queremos que ele inicie sempre que o sistema for ligado, devemos deixar em “Automatic”.
d) EXECUTABLE: caminho onde se encontra o executável, em nosso caso, C:\APLICATIVO\TESTE.exe, ou então, clique no botão em frente o campo para localizar o aplicativo.
e) WORKING DIRECTORY: Equivalente ao “Iniciar Em”, quando criamos atalhos.
Ao final , clique em “Install”.
3 - PARAMETRIZANDO O SERVIÇO:
Agora, vamos aos ajustes para iniciarmos o uso do nosso serviço. Primeiramente, devemos ir ao painel de serviços do Windows, que pode ser acessado em “Iniciar > Executar > Services.msc” semelhantemente ao que fizemos para abrir o prompt de comando. Dentro da tela que irá abrir, devemos localizar nosso serviço, que será encontrado pelo que informamos no “Display Name” (essa informação é a que informamos no registro manualmente na chave DisplayName ou no Service Installer, no campo de mesmo nome).
Ao encontrarmos, clicamos nele com botão direito e acessamos a opção “Propriedades”.
Na tela de propriedades, vamos a aba “Logon”, e marque a opção “Permitir que o serviço interaja com a área de trabalho”. Um detalhe importante, é que se for necessario o uso de uma conta de usuário específica, a mesma deve ser uma conta válida e com os mesmos direitos de acesso liberados a um usuário capaz de executar o aplicativo. Lembre-se que esse usuário deve também ter direito de acesso ao diretório definido como “Working Directory” para o aplicativo.
Aplique as configurações e volte para tela de serviços. Nesse ponto, basta clicar com botão direito sobre seu serviço e selecionar “Iniciar”. Pronto. Se você quiser verificar, basta abrir seu gerenciador de tarefas e verá o aplicativo sendo executado como serviço em segundo plano. Para testar se tudo correu bem, reinicie o sistema e cheque a execução do aplicativo no gerenciador de tarefas.
É isso ai…
LINKS:
Artigo da Microsoft sobre como instalar um serviço usando Windows NT Resource Kit
Arquivo INSTSRV.EXE
Arquivo SRVANY.EXE
Aplicativo NT Service Installer
Redefinições e novos rumos…
É amigos, realmente nao nasci pra manter um blog atualizado. Apesar de minhas tentativas, meu dia a dia nao me permite muita coisa. Tenho um sério problema em “abarcar” muitos compromissos simultâneamente, e isso tem me rendido muita dor de cabeça. Andaram acontecendo diversas coisas desde minha ultima postagem.
Desde mudanças na minha rotina de trabalho até mesmo questões ligadas a familia. Muita coisa mudou, mas nao o desejo de tentar ser sempre o melhor. E é pensando nisso que tenho me esforçado ao máximo todos os dias. Tenho cuidado melhor da saúde, que ainda está bem, obrigado, mas demanda cuidados. Alem disso tenho tentado cuidar melhor também da minha familia. Tá chegando uma garotinha ai, e daqui por diante, os cuidados são em dobro… Nos dias de hoje, ter dois filhos não é tarefa fácil, disso tenho certeza, mas com fé e dedicação, vamos estar sempre dando o melhor.
Novos amigos chegaram, velhos amigos reapareceram, a familia tem crescido e profissionalmente tenho estado de certa forma satisfeito, pelo menos por enquanto. Vamos ver o que o futuro nos reserva.
Abraços a todos amigos, novos e antigos… e aos que não são também…