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.