首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >必须为小程序授予哪些权限才能写入临时文件?

必须为小程序授予哪些权限才能写入临时文件?
EN

Stack Overflow用户
提问于 2010-07-30 15:14:42
回答 2查看 8.9K关注 0票数 3

我们正在开发一个applet,需要它能够读/写用户临时文件目录中的文件(例如C:\Documents and Settings\用户名\Local Settings\Temp)。

小程序已签名,用户在小程序启动时单击“允许”选项,并且Java控制面板已启用“允许用户授予对已签名内容的权限”和“允许用户向来自不受信任的机构的内容授予权限”。

但是,在启动时,我们会得到一个SecurityException:

代码语言:javascript
复制
java.lang.SecurityException: Unable to create temporary file
at java.io.File.checkAndCreate(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at java.io.File.createTempFile(Unknown Source)
at com.jniwrapper.util.AppletHelper.b(SourceFile:104)
at com.jniwrapper.util.AppletHelper.a(SourceFile:79)
at com.jniwrapper.util.AppletHelper.b(SourceFile:50)
at com.jniwrapper.util.AppletHelper.init(SourceFile:122)
at com.x.Y.init(Y.java:31)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Exception: java.lang.SecurityException: Unable to create temporary file

如果我们编辑java.policy文件,将所有内容都授予所有内容,那么小程序可以正常工作,但这显然是不安全的。我们必须授予什么最低权限才能允许小程序在用户的临时文件目录中读/写/创建文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-03 20:04:26

使用策略文件进行测试是可以的,但您不应该依赖它来完成代码,特别是在授予文件权限时,这是危险的。

要与文件交互,您需要执行以下操作。

  1. 为你的大量教程签名,比如this,你可以只做一个自己签名的教程。
  2. 将文件创建代码添加到特权块以下是一个示例

文件运行=(文件)AccessController.doPrivileged( PrivilegedAction() {公共对象运行(){返回新文件(“C:\MyFolder\ myFile”);}}));

票数 6
EN

Stack Overflow用户

发布于 2016-10-14 23:18:50

也到了同样的程度。要授予尽可能接近最低限度所需的权限,您可以使用操作read,write,delete授予${java.io.tmpdir}\-上的FilePermission。这对我很有效。

当然,您必须将${...}替换为系统属性java.io.tmpdir的值。此属性由java.io.File.createTempFile使用。

注意:使用someDir\-可以授予对someDir路径的所有子目录的递归访问权限。此时,您可以使用someDir\*,但我尚未对其进行测试。

如果使用策略文件授予权限,则这些文件很可能已经支持引用系统属性。但请再次搜索一下以确定。如果您使用自定义策略实现,则可以轻松创建权限java.io.FilePermission

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3369365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档