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