Io non sono uni sistemista, ma possibile che l'unica strada sia quella d'incapsulare il mio eseguibile in un servizio? Una cosa più immediata non c'è?
Non devi incapsulare nulla. L'exe è sempre lo stesso.
Semplicemente, all'interno del codice, dovrai aggiungere dei richiami a delle funzioni di sistema che ti facciano partire tale eseguibile come "servizio" anzichè come un "comune" processo.
La differenza sostanziale tra i due è che il primo parte in startup indipendentemente che un'utenza si sia gia loggata o meno, il che soddisfa appieno la tua esigenza di:

> Anche se il server cade e poi riparte dovrebbe ripartire anche la mia applicazione.

Se del programma in questione hai i sorgenti la domanda è pertinente ed IT (si lavora sul codice), altrimenti no (devi usare tool di terze parti con cui "servizierizzare" (o seviziare, a seconda dei gusti :P) l'eseguibile.)

Saluti.