aplicativo cliente .NET auto-atualização, que deve escrever na pasta de arquivo de programa

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

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!

Foi útil?

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).

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