Estou tentando copiar arquivos dentro do windows vista e depois disso iniciar uma aplicação usando Runtime.getRuntime.exec() com o comando cmd.exe, porém o windows vista me mostra o seguinte erro e encerra minha aplicação:
Se eu desabilitar o UAC (Utilizador de Controle de Usuário) funciona corretamente. Só que não posso pedir para os clientes desabilitarem o UAC de forma nenhuma. Gostaria que quando eu tivesse excutando estas ações o UAC entrasse em cena e pedisse permissão de execução para o usuário, mas o que ele faz é dar o erro acima.
Você está tendo problemas de UAC ao tentar copiar o arquivo, ou ao tentar executar o cmd.exe?
No primeiro caso, e supondo que a cópia seja feita via Java e não via Runtime.exec, você precisa executar seu programa (desde o começo) com UAC ativado. Você terá de criar um atalho para seu programa que force que o programa inteiro seja executado com credenciais de administrador. Isso é mais simples que parece: na hora de configurar o atalho, você precisa pôr um
No segundo caso, você precisa executar o cmd.exe como administrador; não sei se é suficiente você usar um "runas " (os parâmetros você precisa pegar com “runas /?” em uma linha de comando do DOS) ou se é necessário fazer mais alguma coisa.
Em um sistema de que participei, tive de criar um wrapper em C++ para a JVM (semelhante aos wrappers que você pode ver seus fontes no JDK) e pôr um “manifest” especial que forçava a pedir o UAC. Mas era um caso bem específico em que eu não podia nem criar um atalho especial.