Pergunta

eu quero executar um instalador setup.exe que installes um software no Vista com java 1.6.

O usuário não é um administrador. Quando tento iniciar o processo eu recebo a mensagem de erro:

CreateProcess error=740

que indica que o usuário tem direitos não é suficiente para iniciar o processo.

Posso enviar uma bandeira ou uma opção para indicar, o processo deve ser executado com direitos de administrador? si Vista tem esta funcionalidade dentro da barra de ferramentas do menu. i pode usar esta função em Java.

Eu chamo o seguinte código

        Runtime rt = Runtime.getRuntime();
        Process process;
        try {
            String fileToExecute = new File(mFolder, mSetupFiles[0]).getCanonicalPath();

            if (logger.isDebugEnabled()) {
                logger.debug("Execute runtime process");
            }
            process = rt.exec(fileToExecute, null, mFolder);

            process.getErrorStream().close();
            process.getInputStream().close();
            process.getOutputStream().close();

            if (logger.isDebugEnabled()) {
                logger.debug("Wait until process is finished");
            }
            process.waitFor();
        } catch (IOException e) {
            throw new StartException(e);
        } catch (InterruptedException e) {
            throw new StartException(e);
        }
Foi útil?

Solução 2

Após 2 dias de teste com i encontrada a seguinte solução.

O erro surge quando a funcionalidade Vista UAC é ativado. UAC mostra uma vez de diálogo pergunta, quando um processo precisa de direitos de administrador.

Mostrando esse diálogo provoca o problema.

Em vez de usar o velho

process = rt.exec(fileToExecute, null, mFolder);

comando, eu estou usando agora o novo 1.5 comando ProcessBuilder

EDIT:

Para evitar o problema que você tem que abrir uma janela de comando que solicita a permissão. E do que você tem que chamar o processo externo.

ProcessBuilder builder = new ProcessBuilder(new String[] { "cmd.exe", "/C", fileToExecute });

Também descrito aqui Executa um programa

externo

Outras dicas

(eu não tentei isso), mas parece que você pode fazer isso usando o programa "elevar" de aqui

este para UAC visão

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