我想使用在浏览器中运行的java applet获取正在运行的进程列表。我的理解是,只要applet签名,它就能获得这些信息。这准确吗?这是否可以使用未签名的小程序?最后,有没有我可以看看的FOS小程序?
感谢。
答案 0 :(得分:3)
只要想要访问/执行本地系统资源,applet 就需要进行签名。这包括执行Runtime#exec()
或ProcessBuilder
,这是获取正在运行的进程列表所必需的。
您可以找到here如何在Windows中获取该列表的基本示例。我建议在继续之前检查if (System.getProperty("os.name").startsWith("win"))
。
将给定的示例移植到applet中并不难,只需让类扩展JApplet
并从AccessController#doPrivileged()
内部执行整个代码。
关于对小程序进行签名,您可以签名manually,最终用户只会面临安全警告并确认是否执行,或者您可以让第三方公司签署一些$$$,例如VeriSign,这样终端用户将不会面临安全警告。不签名将导致applet根本无法运行。
答案 1 :(得分:0)
您必须执行特定于操作系统的命令(通过Runtime.getRuntime().exec
),例如Windows的tasklist.exe
和类似unix的系统的ps
。
至于安全措施,我很确定在标准的'沙盒'中是不可能的,但是'特权'applet可以做到。