Windows Service é executado como SYSTEM para usuários do AD

2

Eu criei um Serviço do Windows que inicia um programa em segundo plano e garante que o webapplication não precise de mais instalação.

Quando inicio este serviço na conta de administrador, o programa em segundo plano é iniciado de forma agradável e quitável e é executado sob o nome de usuário

link

Tudo funciona perfeitamente, posso visitar o site sem informações extras e assim por diante.

Também funciona quando faço logout e faço login com um administrador diferente.

NO ENTANTO, não funciona sob o usuário padrão do domínio. o processo é iniciado, mas não em SISTEMA (mas nome de usuário em branco) e, portanto, o programa em segundo plano é iniciado, mas não com o nome de usuário correto.

Por que isso? E o que preciso alterar para que todos os usuários padrão que fazem login também tenham esse serviço executado como administrador?

    
por Kahn Kah 23.03.2017 / 16:55

1 resposta

0

Eu suspeito que o problema seja este: A conta SYSTEM tem apenas autenticação local (não de domínio ou rede), portanto, quando um usuário normal efetua login, ele não pode gerar ou comandar nenhum processo já em execução com direitos elevados. Isso é um recurso, não um bug - não é possível ter contas de usuário ou convidado fazendo chamadas para processos no nível de raiz sem algum tipo de camada de abstração para impedir que esses usuários / convidados se elevem.

Se eu puder oferecer um método alternativo: crie uma conta que tenha as permissões apropriadas para modificar o aplicativo da web, administrá-lo, etc. e execute seu serviço sob esses credenciais. Bloqueie essa conta para uso interativo (ninguém pode fazer login usando-a) e certifique-se de que ela não tenha direitos sobre todo o sistema, apenas o aplicativo da Web e os recursos apropriados, incluindo o programa verificador de atualizações.

Como você está verificando o status de atualização do seu aplicativo da Web, em vez de acionar uma verificação no login do usuário, execute-o (novamente com a conta de serviço acima) como uma tarefa agendada. Dessa forma, você não precisa de um serviço específico em execução para iniciar sua tarefa em segundo plano de atualização quando um usuário acessa o site, em vez disso, ele é verificado e atualizado em um cronograma definido, já em segundo plano.

    
por 23.03.2017 / 18:27