Como é seu jogo, significando que você possui o código, isso significa que você precisa reescrevê-lo como um Serviço do Windows. Servidores são feitos para executar serviços. Os Serviços do Windows são projetados para serem executados sem interação do usuário, independentemente de alguém estar conectado ou não, e podem ser iniciados automaticamente quando a máquina é inicializada. (Basta definir seu serviço como Automático e ele iniciará logo após o carregamento do SO). Além disso, você pode definir opções avançadas de recuperação no controlador de serviços, para que o Windows reinicie automaticamente o serviço para você se ele falhar ou até mesmo enviar um email notificando-o de que o seu serviço falhou se você estivesse inclinado.
Você não interage diretamente com um serviço do Windows. Os Serviços do Windows não têm interface de usuário e não criam uma janela em uma área de trabalho. (Eles não devem. ) Você não verá uma janela de console quando você fizer logon. No entanto, você pode escrever um aplicativo separado que possa interagir com seu serviço, para permitir que um usuário defina configurações ou execute funções administrativas em seu serviço. Seu aplicativo administrativo pode ser usado para definir e ler as entradas do registro ou as configurações do arquivo de configuração que seu serviço usa, etc.
Basicamente, qualquer outra coisa que você faça além do que acabei de descrever acima é fazer errado (TM) , IMHO.
Mas, para completar, vamos explorar algumas das maneiras pelas quais você pode fazer algo errado, mas ainda assim, tecnicamente, conseguir o que você quer.
Say there is a problem and the server is restarted unexpectedly, I should not have to login for it to start. Is there some way to do this?
Claro. Faça o executável ser executado na inicialização colocando-o em (Desculpe, é para o login do usuário.) Ou coloque-o em uma tarefa agendada que esteja configurada para ser executada na inicialização do sistema. (É claro que, se você for na rota do Serviço do Windows, basta definir seu serviço como Automático no Service Controller.) HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
.
say the application crashes, is there a way to make the OS close the crashed executable and restart it?
Isso não faz sentido. Se o processo ainda estiver em execução, ele não travou. Se ele <> pendurou por causa de algo que você fez de errado em seu código, por exemplo, falta de tratamento de exceções, isso é algo que você precisa corrigir em seu código.
Por outro lado, se você quisesse executar um script a cada 5 minutos (através do Agendador de Tarefas) que verificasse se FunGame.exe
estava em execução ou não e iniciá-lo se não estivesse em execução, então você está livre para faça isso ... embora eu odeie você se você rodasse algo assim em um dos meus servidores.
In addition, when I do login as administrator, if I could see it running, that would be awesome too. (wg: visible console window)
Não vai acontecer - a menos que você aceite meu conselho sobre como fazer um aplicativo separado que foi especificamente projetado para ser uma interface de administração / monitoramento em seu serviço, então você pode colocar esse aplicativo na inicialização do Administrador pasta, etc.
Ah, e uma última coisa ... também há srvany.exe
... é antigo e não é suportado, mas você pode querer examiná-lo como um host de serviço genérico se não for fazer seu próprio serviço.