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