aplicativo cliente .NET auto-atualização, que deve escrever na pasta de arquivo de programa
-
22-08-2019 - |
Pergunta
Semelhante a: Windows Vista UAC elevação se o caminho é protegido?
Eu tenho um aplicativo .NET Cliente instalado em c: \ Arquivos de Programas (Windows Vista). Esta aplicação deve atualizar-se, mas não por causa de problemas de permissão. A auto-atualizador deve simplesmente substituir um par de conjuntos, mas eles estão todos localizados sob arquivo C: \ Programa e o aplicativo lança a seguinte exceção:
System.UnauthorizedAccessException: O acesso ao caminho 'C: \ Program Arquivos ...' é negado.
Eu não tenho controle sobre onde o aplicativo pode ser instalado e a permissão. Existe alguma solução para isso? É possível solicitar os direitos de administrador para um par de segundos? É possível aparecer uma janela UAC? Tenho a certeza que há uma solução ... Caso contrário, como Firefox seria capaz de atualizar-se?
Agradecemos antecipadamente para a ajuda e idéias!
Solução
Você pode usar um Click Once método de implantação? Nós usamos isso para uma aplicação interna e os usuários não têm problemas com permissões quando publicar uma nova versão. Eles são solicitados a instalar a atualização quando iniciar o aplicativo (se uma nova versão existe) e instala sem problemas.
Outras dicas
Você não pode elevar as permissões de um processo a meio, mas você pode iniciar outro processo separado com permissões superiores que podem fazer o trabalho para você.
Obtenha seu aplicativo principal para colocar todos os detalhes do files / instalação em um local temporário de baixa permissão. Quando estiver pronto, iniciar um aplicativo menor cujo único trabalho é para copiar esses arquivos para o diretório Arquivos de Programas (e talvez reiniciar o aplicativo principal com as novas atualizações). Marque essa aplicação como exigindo a permissão necessária para copiar para o diretório de Arquivos de Programas ou gravação para o registro (ou o que mais for necessário).