java 如何获取本地已安装的所有软件,并获取已安装的软件是否运行?

目前我用tasklist获取到了进程列表,读注册表获取到了已安装软件的列表(但是不全),进程列表和读注册表已安装的名称对不上,如果可以的话,能否直接上代码

你是要获取客户端还是服务端的软件?
代码部署在服务端,不依靠第三方插件,可拿不到客户端的数据的