【发布时间】:2012-04-20 14:00:05
【问题描述】:
背景
我偶然发现了我的一个非常过时的旧小程序(其中的一部分来自 2001 年),我真的很想把它从死里复活!小程序应该在其本机应用程序中打开一个文件(除其他外),但这不适用于最新的 Windows 版本(包括 Windows 7),它在 Windows XP。
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 中工作的代码,但在 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());
}
【问题讨论】:
-
"Applet 应该在其原生应用程序中打开一个文件" 如果您的客户端可以运行 1.6 VM,请查看
Desktop.open(File)"(以及其他内容) " 还有什么? -
我只想在 1.5 版中执行此操作。 “除其他外”,例如创建/读取/编辑/打开/删除文件。所有这些都适用于运行 Windows XP 的小程序。
标签: java windows security applet