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

2023-11-29

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

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

然而,在启动时,我们得到一个 SecurityException:

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 文件以将所有内容授予所有内容,则小程序可以正常工作,但这显然是不安全的。我们必须授予什么最低权限才能允许小程序在用户的临时文件目录中读/写/创建文件?


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

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

  1. 签署你的罐子 - 大量的教程,如this,你可以做一个自签名的。

  2. 将文件创建代码添加到特权块这里是一个示例

    File myFile = (File) AccessController.doPrivileged(new PrivilegedAction() {
    public Object run() 
    {
        return new File("C:\\MyFolder\\MyFile");
    }
    
    });
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序必须授予哪些权限才能写入临时文件? 的相关文章

随机推荐