Criar o serviço Windows a partir do executável

Existe alguma forma rápida de, dado um ficheiro executável, criar um serviço Windows que, quando iniciado, o lança?

Author: German Latorre, 2010-08-27

6 answers

Para criar um serviço Windows a partir de um executável, você pode usar sc.exe:

sc.exe create <new_service_name> binPath= "<path_to_the_service_executable>"

Você deve ter aspas em torno do caminho real exe, e um espaço depois do binPath=.

Mais informações sobre o comando sc podem ser encontradas no Microsoft KB251192 .

Note que não funcionará para qualquer executável: o executável deve ser um serviço Windows ( ou seja, implementa ServiceMain). Ao registrar um executável Não-serviço como um serviço, você terá o seguinte erro ao tentar iniciar o serviço:

Erro 1053: O serviço não respondeu atempadamente ao pedido de início ou controlo.

Existem ferramentas que podem criar um serviço Windows a partir de executáveis arbitrários, não-service, veja as outras respostas para exemplos de tais ferramentas.

 347
Author: Sergii Pozharov, 2015-11-25 11:42:07

Usar o Nssm (O Gestor de serviços que não Chupa ) para executar A.Morcego ou qualquer um .Ficheiro EXE como serviço.

Http://nssm.cc/

  • Passo 1 : Obter Nssm
  • Passo 2 : Instale o seu sevice com {[[0]}
  • Passo 3 : Isto irá abrir uma interface que irá usar para localizar o seu executável
 167
Author: Kevin Tong, 2018-05-02 17:00:45
A prolongar a resposta do Kevin Tong.

Passo 1: transferência & Unzip nssm-2, 24.zip

Passo 2: do tipo da linha de comandos:

C:\> nssm.exe install [servicename]

Ele irá abrir a interface gráfica abaixo (o exemplo é o servidor UT2003), então basta navegar para: yourapplication.exe

enter image description here

Mais informações sobre: https://nssm.cc/usage

 75
Author: YumYumYum, 2017-04-04 11:23:01
Muitas das respostas existentes incluem a intervenção humana no momento da instalação. Este pode ser um processo propenso a erros. Se você tem muitos executáveis que queriam ser instalados como serviços, a última coisa que você quer fazer é fazê-los manualmente na hora de instalação.

Para o cenário acima descrito, criei serman , uma ferramenta de linha de comandos para instalar um executável como um serviço. Tudo o que você precisa para escrever (e só escrever uma vez) é um arquivo de configuração de serviço simples, juntamente com o seu executável. Corre

serman install <path_to_config_file>

Irá instalar o serviço. stdout e stderr estão todos registados. Para mais informações, dê uma olhada no site do projeto .

Um ficheiro de configuração de trabalho é muito simples, como demonstrado abaixo. Mas também tem muitas características úteis, como <env> e <persistent_env> abaixo.

<service>
  <id>hello</id>
  <name>hello</name>
  <description>This service runs the hello application</description>

  <executable>node.exe</executable>

  <!-- 
       {{dir}} will be expanded to the containing directory of your 
       config file, which is normally where your executable locates 
   -->
  <arguments>"{{dir}}\hello.js"</arguments>

  <logmode>rotate</logmode>

  <!-- OPTIONAL FEATURE:
       NODE_ENV=production will be an environment variable 
       available to your application, but not visible outside 
       of your application
   -->
  <env name="NODE_ENV" value="production"/>

  <!-- OPTIONAL FEATURE:
       FOO_SERVICE_PORT=8989 will be persisted as an environment
       variable to the system.
   -->
  <persistent_env name="FOO_SERVICE_PORT" value="8989" />
</service>
 8
Author: KFL, 2018-03-13 07:37:25
Estes extras são úteis.. necessita de ser executado como um administrador
sc install <service_name> binpath=<binary_path>
sc stop    <service_name>
sc queryex <service_name>
sc delete  <service_name>

Se o seu nome de Serviço tiver espaços, inclua "aspas".

 3
Author: PodTech.io, 2017-05-12 18:26:23

Eu testei um bom produto para isso: AlwaysUp . Não é grátis, mas eles têm um período de teste de 30 dias para que você possa dar-lhe uma tentativa...

 0
Author: A. Masson, 2017-07-01 09:06:50