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.

Foi útil?

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.

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