Como faço para detectar se uma função está disponível durante JNLP de execução?
-
09-06-2019 - |
Pergunta
Eu tenho uma aplicação que realmente deve ser instalado, mas funciona bem quando implantado com o JNLP.
No entanto, parece que algumas funções, tais como Java Runtime.exec
não trabalho usando o padrão de opções de segurança.
Eu gostaria, portanto, desativar INTERFACE do usuário funcionalidade que depende de tais funções.
Então a minha pergunta é, como faço para detectar em tempo de execução, se determinadas funções estiverem disponíveis ou não?
O estudo de caso, aqui, claro, é Runtime.exec
.
Solução
Você quer pedir para o SecurityManager se você tem Exec direito com o checkExec método.
Outras dicas
Eu também descobriram que adicionando o seguinte ao arquivo JNLP:
<security>
<all-permissions/>
</security>
E da assinatura do arquivo JAR permite que o aplicativo para ser executado com todas as permissões necessárias para Runtime.exec
.
Para o exemplo específico de tempo de execução.exec existe um método na classe SecurityManager checkExec(String cmd) que irá lançar uma exceção que podem ser capturados para determinar se o necessário comando pode ser executado.Para obter mais informações, consulte o javadoc para o tempo de execução.exec e SecurityManager.checkExec.
O caso mais geral requer a criação de um objeto de Permissão que representa a tarefa que está sendo verificado e executando o SecurityManager do método checkPermission.