我想使用在瀏覽器中運行的java applet來獲取運行進程的列表。我的理解是,只要applet已經簽名,它就能夠獲得這些信息。這是否準確?這可能與一個未簽名的小程序?最後,有沒有可用的FOS小程序,我可以看看?是否可以使用applet獲取正在運行的進程的列表?
謝謝。
我想使用在瀏覽器中運行的java applet來獲取運行進程的列表。我的理解是,只要applet已經簽名,它就能夠獲得這些信息。這是否準確?這可能與一個未簽名的小程序?最後,有沒有可用的FOS小程序,我可以看看?是否可以使用applet獲取正在運行的進程的列表?
謝謝。
一個小程序需要每當它想要訪問/執行本地系統資源時被簽名。這包括執行Runtime#exec()
或ProcessBuilder
,這需要能夠獲取正在運行的進程的列表。
你可以找到here一個基本的例子如何在Windows中獲取該列表。在繼續之前,我建議檢查if (System.getProperty("os.name").startsWith("win"))
。
將給定示例移植到applet中並不難,只需讓該類擴展JApplet
並從AccessController#doPrivileged()
內部執行整個代碼即可。
至於簽名小程序,您可以對其簽名manually,最終用戶只會面臨安全警告,並確認是否執行該安全警告,或者您可以讓第三方公司簽署一些$$ $,例如VeriSign,這樣最終用戶將不會面臨安全警告。不簽名會導致applet無法運行。
您必須執行特定於操作系統的命令(通過Runtime.getRuntime().exec
),如tasklist.exe
(適用於Windows)和ps
(適用於類Unix系統)。至於安全措施,我敢肯定它在標準「沙箱」中是不可能的,但是「特權」applet可以做到這一點。