如何在JNLP执行期间检测功能是否可用?
时间:2020-03-05 18:44:48 来源:igfitidea点击:
我有一个应真正安装的应用程序,但是使用JNLP部署时可以正常工作。
但是,似乎某些Java函数(例如Runtime.exec)无法使用默认的安全选项运行。
因此,我想禁用依赖于此类功能的UI功能。
所以我的问题是,如何在运行时检测某些功能是否可用?
案例研究当然是" Runtime.exec"。
解决方案
回答
我们想向SecurityManager询问我们是否具有checkExec方法的执行权。
回答
我还发现将以下内容添加到JNLP文件中:
<security> <all-permissions/> </security>
并对JAR文件进行签名后,该应用便可以使用Runtime.exec所需的所有权限运行。
回答
对于Runtime.exec的特定示例,在SecurityManager类checkExec(String cmd)上有一个方法,该方法将引发一个异常,可以捕获该异常以确定是否可以执行必要的命令。有关更多信息,请参见Runtime.exec和SecurityManager.checkExec的javadoc。
更一般的情况是需要创建一个Permission对象,该对象代表正在检查的任务,并运行SecurityManager的checkPermission方法。