Acabei resolvendo isso com o excelente (se confundido documentado) nssm
- o gerente de serviço não-sugador
Eu não sou um administrador do Windows, então me dedico a tornar tudo amigável ao Unix. Espero que isso seja mais útil do que confuso. Aqui está como resolvi isso (e o documentei para o meu futuro).
- Instale
choco
porque é o mais próximo possível de apt
ou brew
para Windows.
-
Instale cygwin
porque vamos usar o BASH.
choco install --yes cygwin
-
Instale nssm
choco install --yes nssm
-
Salve o seguinte em um script que chamarei de create_service.sh
name='Phone Home'
command='C:\Program Files\Python35\python.exe'
arguments='phone_home.py -p 3389'
start_in='C:\Users\ET\Dropbox\src\' # Edit this shared code have it sync'd via Dropbox FTW!
domain='.'
username='ET'
password='Use SSH and reverse port forwarding!'
description='Launch Phone Home script at startup for real, not at log on. (Because this machine is headless, and how are you supposed to log in before it phones home?)'
display_name="00 $name" # make it sort to the top in Services
nssm stop "$name"
nssm remove "$name" confirm
nssm install "$name" "$command" $arguments
nssm set "$name" AppDirectory "$start_in"
nssm set "$name" DisplayName "$display_name"
nssm set "$name" ObjectName "$domain\$username" "$password"
nssm set "$name" Description "$description"
nssm start "$name"
-
"Instale" um serviço do Windows por meio da API nssm
apenas chamando o script.
source create_service.sh
NOTA:
Os comandos nssm stop
e nssm remove
falharão na primeira vez, mas eu os coloco lá para que você possa executar novamente o script para fazer alterações em seu serviço.
Isso tudo indica um sistema muito complexo de execução remota de código e proxy ssh do Microsoft Remote Desktop. Essa é uma lição para outro dia.