Eu sei que esta é uma pergunta antiga, mas eu vim aqui procurando uma resposta, então direi o que usei. SRVSTART funcionou muito bem, eu criei um arquivo ini dizendo o que iniciar e em qual diretório iniciar o programa, e depois usei o exe SRVSTART para criar o serviço. Em seguida, use SC para definir uma descrição. Em seguida, usei a interface do usuário de serviços para definir o ID de logon a ser usado para o serviço. O SRVStart pode ser configurado para assistir ao seu programa e reiniciá-lo se ele parar de funcionar. Até agora está funcionando muito bem. Aqui está um link para a página do autor, você pode baixá-lo. Se você obtiver o código-fonte, ele será antigo, escrito para o Visual C ++ 6.0. Ou você pode obter o exe e as dlls necessárias lá. link
Aqui está o meu arquivo INI de amostra (na pasta C: \ SpecialService para este exemplo)
SpecialService.ini:
[SpecialService]
startup=C:\SpecialService\SpecialProgram.exe
startup_dir=C:\SpecialService
shutdown_method=kill
auto_restart=y
restart_interval=60
Então aqui está o comando para criar o serviço:
srvstart install SpecialService -c C:\SpecialService\SpecialService.ini
Finalmente, aqui está o comando para definir a descrição do serviço:
SC description eCitationService "Put your description here in quotes... "