2

バックグラウンド

私は非常に時代遅れの古いアプレット(2001年からの一部)に出くわしました、そして私は本当にそれを死から蘇らせたいです!アプレットは(とりわけ)ネイティブアプリケーションでファイルを開く必要がありますが、これは最新のWindowsバージョン(Windows 7を含む)では機能せず、 WindowsXPではうまく機能します。

        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) {
         }

問題解決

私は上記のコードがそれと関係があるとかなり確信しています。このコードを完全に削除してからアプレットに再署名するのと同じくらい簡単ですか?または、署名する前に、代わりに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で機能するが、Windows7では実行されないように見えるコードです。

    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());
    }
4

1 に答える 1

2

このコードを完全に削除してからアプレットに再署名するのと同じくらい簡単ですか?

それがここでの解決策です。

于 2012-04-20T14:30:05.130 に答える