Por que um aplicativo em execução como a conta do sistema no Windows ao fazer logoff

StackOverflow https://stackoverflow.com/questions/970765

  •  13-09-2019
  •  | 
  •  

Pergunta

Eu tenho um # aplicação c que é lançado na conta do sistema em uma máquina e apresenta algumas caixas de diálogo ao usuário. Quando um regulares logs de usuário fora do aplicativo é encerrado também. Eu teria pensado que desde a sua execução sob a conta do sistema que vai continuar a correr, apesar do usuário não ser identificado.

Qualquer informação sobre por que isso acontece seria apreciada.

Foi útil?

Solução

Se você quiser que seu aplicativo para continuar correndo depois que o usuário log off (por exemplo, para manter o estado durante o tempo que o computador está executando), você precisa de um serviço. No entanto, os serviços são fortemente desencorajados de apresentar UI. Se você precisa tanto de longa duração e interface do usuário, considere escrever serviço para armazenar seus dados, e um aplicativo que é executado cada vez que um usuário faz logon em que mostra UI e interage com o serviço.

Outras dicas

é seu aplicativo de um serviço? Parece que o que você quer é um serviço. Note que você pode executar qualquer processo de qualquer usuário, mas isso não significa que seja um serviço. Se o seu processo é implementado como um serviço, então ele vai continuar funcionando mesmo com nenhum usuário logado.

Este é um recurso de segurança quando um usuários sessão termina aplicativos que eles invocados são terminadas. Se você precisa de um aplicativo para execução fora de uma sessão de usuários que você precisa de um serviço no entanto desde a sua em seus próprios serviços de sessão não pode perder "alcance para" a sessão de usuários com mensagens e tal.

Você precisa executar o aplicativo como um serviço do Windows.

Você vai precisar para criar seu aplicativo como um serviço do Windows. Se seu aplicativo exibe diálogos, em seguida, você precisa verificar o 'serviço Permitir a interagir com área de trabalho' e execute-o em conta do sistema local.

No entanto, uma abordagem melhor seria para expor uma interface queryable de sua aplicação usando WCF ou Remoting que você pode exibir aos usuários usando um aplicativo separado. Se você quiser notificações de seu aplicativo quando ninguém está conectado no momento, então você pode querer considerar o envio de e-mails ou eventos postagem para um WCF separado / Web Services / Remoting endpoint.

Como o processo foi iniciado por explorer.exe, ela será encerrada quando o usuário faz logoff, independentemente do que conta é executado. Isso é simplesmente as obras maneira como o Windows. Para permitir que o processo continue a funcionar ele precisa ser um serviço ou possivelmente iniciada pelo agendador de tarefas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top