Existe alguma maneira rápida de, dado um arquivo executável, criar um serviço do Windows que, quando iniciado, o inicia?
windows
windows-services
Latorre alemão
fonte
fonte
Respostas:
Para criar um serviço do Windows a partir de um executável, você pode usar
sc.exe
:Você deve ter aspas no
exe
caminho real e um espaço após obinPath=
.Mais informações sobre o
sc
comando podem ser encontradas no Microsoft KB251192 .Observe que ele não funcionará para nenhum executável: o executável deve ser um serviço do Windows ( ou seja, implementar o ServiceMain ). Ao registrar um executável que não seja de serviço como um serviço, você receberá o seguinte erro ao tentar iniciar o serviço:
Existem ferramentas que podem criar um serviço do Windows a partir de executáveis arbitrários que não são de serviço; consulte as outras respostas para exemplos de tais ferramentas.
fonte
binpath=
ter que colocar o caminho do executável entre aspas duplas está totalmente errado, pelo menos para o Windows 10. a citação é necessária se e somente se o caminho contiver caracteres especiais como espaço em branco. Além disso, o revestimento (lowe / maiúsculas / minúsculas) não importa em lugar algum, também nos nomes de variáveis, edisplayname="my service"
é outro item a ser transmitido na linha de comando ao criar um serviço para exibir como a primeira linha (Name
) emservices.msc
.binPath=
foi necessário para mim no Windows 7, mas não no Windows 10Use o NSSM ( o Gerenciador de serviços que não é de sucção ) para executar um arquivo .BAT ou qualquer arquivo .exe como um serviço.
http://nssm.cc/
nssm.exe install [serviceName]
fonte
Extensão da resposta (Kevin Tong).
Etapa 1: Baixar e descompactar nssm-2.24.zip
Etapa 2: Na linha de comando, digite:
C:\> nssm.exe install [servicename]
ele abrirá a GUI como abaixo (o exemplo é o servidor UT2003) e simplesmente navegue até: yourapplication.exe
Mais informações em: https://nssm.cc/usage
fonte
nssm.exe install [serviceName]
. Essa solução funciona, mas se você tiver um aplicativo GUI, não funcionará no Win Serever2003. Se mais tarde você quiser removê-lo, usenssm.exe remove [youservicename]
nginx
não é necessário e enganoso. O comando funcionará sem ele também. É um parâmetro opcional se você deseja fornecer o nome do serviço no prompt de comando.Muitas respostas existentes incluem intervenção humana no momento da instalação. Este pode ser um processo propenso a erros. Se você tem muitos executáveis desejados para serem instalados como serviços, a última coisa que você quer fazer é executá-los manualmente no momento da instalação.
No cenário descrito acima, criei o serman , uma ferramenta de linha de comando para instalar um executável como serviço. Tudo o que você precisa escrever (e escrever apenas uma vez) é um arquivo de configuração de serviço simples, juntamente com o seu executável. Corre
instalará o serviço.
stdout
estderr
estão todos registrados. Para mais informações, consulte o site do projeto .Um arquivo de configuração de trabalho é muito simples, como demonstrado abaixo. Mas também possui muitos recursos úteis, como
<env>
e<persistent_env>
abaixo.fonte
esses extras são úteis .. precisam ser executados como administrador
Se o nome do seu serviço tiver espaços, coloque "aspas".
fonte
sc create <service_name> binpath= <binary_path>
Eu testei um bom produto para isso: AlwaysUp . Não é gratuito, mas eles têm um período de avaliação de 30 dias para que você possa experimentá-lo ...
fonte
Você pode conferir meu pequeno utilitário gratuito para obter as operações de criação, edição e exclusão de serviços. Aqui está o exemplo de criação:
Vá para Serviço -> Modificar -> Criar
Arquivo executável (google drive): [Download]
Código fonte: [Download]
Postagem no blog: [BlogLink]
Classe do editor de serviço: WinServiceUtils.cs
fonte