Iniciar processo Java Runtime com direitos de administrador no Vista
-
07-07-2019 - |
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);
}
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