Um serviço do Windows é uma maneira de executar um programa toda vez que o computador inicia, mesmo que não se faça o login. Além de garantir que o programa esteja aberto e seja executado, o serviço do Windows oferece log de eventos e por isso é a maneira mais utilizada por profissionais nos ambientes corporativos. Os “data centers” são lugares com controle de acesso onde ficam os servidores que devem usar aplicativos como serviço do Windows, desta forma qualquer manutenção não interrompe a produção e mantém maior disponibilidade para os usuários.

Embora um serviço seja uma ótima maneira de rodar um aplicativo, nem todo aplicativo é um serviço. Além disso você pode criar aplicações Java ou Python e usar como serviço também.

Existem algumas maneiras, pagas e grátis que você pode adaptar seu programa sem alterar seu código fonte para poder usa-lo como serviço do Windows. Falarei aqui como sempre de soluções grátis, que ao meu ver são sempre as melhores.

1. Criando Um Serviço Definido Pelo Usuário. Windows NT Resource Kit. Somente para aplicações Windows.

Com base no artigo da Microsoft kb137890 você pode criar um serviço usando os arquivos instsrv.exe e SRVANY.EXE contidos no Windows NT Resource Kit.

Como fazer?

Primeiramente localize o arquivo executável (com extensão EXE) que você queira tornar um serviço.

Copie os arquivos srvany.exe e instsrv.exe na pasta do programa e abra a linha de comando (menu iniciar – cmd + enter).

Vamos supor neste exemplo que vamos colocar a aplicação monitor.exe que está na pasta c:\monitor como serviço chamado MONITOR. Execute o comando:

c:\monitor\instsrv.exe "MONITOR" c:\monitor\srvany.exe

Se o comando for bem sucedido, você recebe a mensagem:

“The Service was successfuly added!…”

Agora temos que alterar o registro do Windows. Lembre-se de fazer um backup do registro do Windows antes de altera-lo.

Para abrir o editor do registro vá no menu iniciar, executar e digite regedit.exe

Encontre a chave (key):

"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\monitor"

Clique com o botão direito no nome do seu serviço e escolha “criar nova chave” e dê o nome “Parameters”

Dentro da pasta “Parameters”, crie um novo “Valor da Cadeia de Caracteres” ou em inglês “String Value” chamado de “AppDirectory” e no valor entre com o caminho do seu serviço. No exemplo:

c:\monitor.

Ainda dentro da pasta “Parameters” crie novamente “Valor da Cadeia de Caracteres” chamado de “Application” e no seu valor entre com o caminho completo do seu executável. No exemplo:

c:\monitor\monitor.exe

O seu serviço já está funcionando, basta inicia-lo através do menu de serviços do Windows.

Opcionalmente você ainda pode criar configurações especiais dentro de uma novo “Valor da Cadeia de Caracteres” chamado de “AppParameters” com o valor “config.ini”.

Para aplicações que abrem janelas do Windows, você deve alterar as propriedades do serviço. Dentro do painel de serviços (services.msc a partir do menu iniciar – executar), clique com o botão direito em cima do seu serviço, e na aba “Logon” marque a opção “Permitir que o serviço interaja com a área de trabalho”.

2. Criando serviço utilizando a aplicação externa ServiceInstaller. Para scripts em java ou Python.

windows service installer

O aplicativo grátis ServiceInstaller coloca qualquer aplicação como serviço, inclusive scripts Java ou Python.

Para usar script Python:

Service Name : PythonTest
Display Name : PythonTest
Startup : Manual ou Automatico
Dependencies : Deixar em branco ou preencher se souber
Executable : c:\python25\python.exe
Arguments : c:\path_to_your_python_script\test.py
Working Directory : c:\path_to_your_python_script

Para usar Java:

Rode o ServiceInstaller para criar um novo serviço. Neste exemplo, assumimos que o java está instalado na pasta c:\jdk1.2

Service Name : JavaTest
Display Name : JavaTest
Startup : Manual
Dependencies : (deixar em branco)
Executable : c:\jdk1.2\bin\java.exe
Arguments : -cp c:\javatest Test
Working Directory : c:\javatest

Depois de criado, vá no menu de serviços do Windows para ativa-lo.