Estou assumindo que o programa precisa exibir sua interface do usuário e que você não pode simplesmente executá-la de forma não interativa. (Eu amo essas "joias" de software ...)
Veja o que eu faria pessoalmente:
-
Configure o computador servidor com um
AutoAdminLogon
como o usuário para o qual você deseja executar o aplicativo. Isso fará com que o console do servidor faça logon como este usuário automaticamente na inicialização. -
Adicione um script ao grupo "Inicialização" pessoal do usuário que inicia a tarefa de forma assíncrona, monitora a lista de processos para a tarefa que está sendo apresentada (eu usaria
WMIC PROCESS LIST
, pessoalmente), alerta se a tarefa for ausente da lista de processos e, se desejado, reinicie o processo. Eu também bloquearia a estação de trabalho também.
O script no grupo de inicialização pode ser tão simples quanto (chamando o programa que você executou eqalert.exe
):
@echo off
:restart
start "" "C:\Program Files\EQFU\EQWin32\eqalert.exe"
:check_loop
rem Delay 30 seconds between checks
ping -n 30 127.0.0.1 >NUL 2>NUL
wmic process list | find /i "eqalert.exe" >NUL 2>NUL
if not errorlevel 1 goto check_loop
echo eqalert.exe not running - restarting
eventcreate /T ERROR /ID 1 /L APPLICATION /D "eqalert.exe not running - restarting"
goto restart
Esse script pressupõe que haverá apenas uma instância da tarefa em execução e será apenas verificar a presença da tarefa na lista de processos. Se o processo travar e morrer de outra forma, este script não pegará isso. (Monitorar se o programa está "respondendo" ao Windows - ou seja, se a bomba de mensagens ainda estiver ---- bombando-- é uma perspectiva mais envolvida.)