过时的com.ms.security的等效安全功能是什么?

时间:2012-04-20 14:00:06

标签: java windows security applet

背景

我偶然发现了一个非常过时的旧applet(2001年的部分内容),我真的想把它从死里复活! applet应该在其本机应用程序中打开一个文件(除此之外),但这不适用于最新的Windows版本(包括 Windows 7 ),它在 Windows XP上运行良好< / em>的

        try {
                if (Class.forName("com.ms.security.PolicyEngine") != null) {
                    PolicyEngine.assertPermission(PermissionID.EXEC);
                    PolicyEngine.assertPermission(PermissionID.FILEIO);
                    PolicyEngine.assertPermission(PermissionID.NETIO);
                    PolicyEngine.assertPermission(PermissionID.UI);
                    PolicyEngine.assertPermission(PermissionID.USERFILEIO);
                    PolicyEngine.assertPermission(PermissionID.CLIENTSTORE);
                } 
                else {
                } 
         } catch (Throwable e) {
         }

问题/解决方案

我很确定上面的代码与它有关。是否像完全删除此代码然后重新签名applet一样简单?或者我需要在签署之前使用 java.security 包重新实现它吗?如果我需要用 java.security 重新实现它,只需使用类似的东西就足够了:

       try {
                if (Class.forName("java.security.Policy") != null) {            
                    final Permissions permissions = new Permissions();
                    permissions.add( new java.security.AllPermission());
                    } 
                else {
                }                 
        } catch (Throwable e) {
        }

我需要在 Windows 7 上使用它?

小程序正在使用 Java版本1.5.0(J2SE 5.0)。

干杯。

更新

以下是适用于Windows XP的代码,但似乎不能在Windows 7中执行。

    String command = '"' + sDir + sFileName + '"';
    Runtime myRuntime = Runtime.getRuntime();
    try {
        myRuntime.exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " + command);
        gGfx.setStatusText("File opened.");
        gGfx.drawStatusBar(1);
    } catch (IOException e) {

        System.out.println("Error " + e.getMessage());
    }

1 个答案:

答案 0 :(得分:2)

  

是否只是完全删除此代码然后重新签名applet一样简单?

这就是解决方案。