我们正在开发一个applet,并需要它能够读取/写入用户临时文件目录中的文件(例如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文件以将所有内容授予所有权限,则该applet可以正常工作,但这显然是不安全的。我们必须授予什么最小权限才能允许applet读取/写入/创建用户临时文件目录中的文件?