Как определить, доступна ли функция во время выполнения JNLP?

StackOverflow https://stackoverflow.com/questions/33829

Вопрос

У меня есть приложение, которое действительно должно быть установлено, но оно отлично работает при развертывании с использованием JNLP.

Однако может показаться, что некоторые функции Java, такие как Runtime.exec , не работают с использованием параметров безопасности по умолчанию.

Поэтому я бы хотел отключить функциональность пользовательского интерфейса, которая опирается на такие функции.

Итак, мой вопрос: как определить во время выполнения, доступны ли определенные функции?

Тематическим примером, конечно же, является Runtime.exec .

Это было полезно?

Решение

Вы хотите задать вопрос SecurityManager если у вас есть право Exec с методом checkExec.

Другие советы

Я также обнаружил, что добавляю в файл JNLP следующее:

<security>
    <all-permissions/>
</security>

А подписание файла JAR позволяет приложению работать со всеми разрешениями, необходимыми для Runtime.exec .

Для конкретного примера Runtime.exec в классе SecurityManager есть метод checkExec (String cmd), который будет вызывать исключение, которое может быть перехвачено для определения возможности выполнения необходимой команды. Для получения дополнительной информации см. Javadoc для Runtime.exec и SecurityManager.checkExec.

В более общем случае требуется создать объект Permission, представляющий проверяемую задачу, и запустить метод checkPermission SecurityManager.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top