java查询已经安装的软件列表
2010-11-21 22:52
459 查看
本来是在网上看到一个c语言版本的,一直很纳闷怎么没有java版的?
终于找到了一个用java版类似的,java通过调用系统API可以轻松获取已安装软件的详细信息。
但是原作者写的很不理想,甚至连注册表的位置都找错了……
经过大幅改进,效果相当不错,
原文章竟然找不到了,晕,等找到了把它地址放上来
上图:
下载地址:
http://download.csdn.net/source/2859106
//附上源码
终于找到了一个用java版类似的,java通过调用系统API可以轻松获取已安装软件的详细信息。
但是原作者写的很不理想,甚至连注册表的位置都找错了……
经过大幅改进,效果相当不错,
原文章竟然找不到了,晕,等找到了把它地址放上来
上图:
下载地址:
http://download.csdn.net/source/2859106
//附上源码
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextPane; public class CheckSoftware { private JFrame f = new JFrame("已经安装的软件列表"); private JTextPane textPane = new JTextPane(); private MyTable myTable=new MyTable(); public CheckSoftware() { f.setLocation(300, 200); f.setSize(800,500); JScrollPane jScrollPane = new JScrollPane(myTable.getTable()); f.add(jScrollPane); f.setVisible(true); f.setDefaultCloseOperation(f.EXIT_ON_CLOSE); try { check(); } catch (Exception e) { e.printStackTrace(); } } private void check() throws Exception { textPane.setText("您已经安装的软件:"); Runtime runtime = Runtime.getRuntime(); Process process = null; process = runtime .exec("cmd /c reg query HKEY_LOCAL_MACHINE//SOFTWARE//Microsoft//Windows//CurrentVersion//Uninstall//"); BufferedReader in = new BufferedReader(new InputStreamReader(process .getInputStream())); String string = null; while ((string = in.readLine()) != null) { process = runtime.exec("cmd /c reg query " + string + " /v DisplayName"); BufferedReader name = new BufferedReader(new InputStreamReader( process.getInputStream())); String[] message = queryValue(string); if(message!=null) myTable.addRow(message); f.repaint(); } in.close(); process.destroy(); } //具体查询每一个软件的详细信息 private String[] queryValue(String string) throws IOException { String nameString = ""; String versionString = ""; String publisherString=""; String uninstallPathString = ""; Runtime runtime = Runtime.getRuntime(); Process process = null; BufferedReader br=null; process = runtime.exec("cmd /c reg query " + string + " /v DisplayName"); br = new BufferedReader(new InputStreamReader(process .getInputStream())); br.readLine();br.readLine();//去掉前两行无用信息 if((nameString=br.readLine())!=null){ nameString=nameString.replaceAll("DisplayName REG_SZ ", ""); //去掉无用信息 } process = runtime.exec("cmd /c reg query " + string + " /v DisplayVersion"); br = new BufferedReader(new InputStreamReader(process .getInputStream())); br.readLine();br.readLine();//去掉前两行无用信息 if((versionString=br.readLine())!=null){ versionString=versionString.replaceAll("DisplayVersion REG_SZ ", ""); //去掉无用信息 } process = runtime.exec("cmd /c reg query " + string + " /v Publisher"); br = new BufferedReader(new InputStreamReader(process .getInputStream())); br.readLine();br.readLine();//去掉前两行无用信息 if((publisherString=br.readLine())!=null){ publisherString =publisherString.replaceAll("Publisher REG_SZ ", ""); //去掉无用信息 } process = runtime.exec("cmd /c reg query " + string + " /v UninstallString"); br = new BufferedReader(new InputStreamReader(process .getInputStream())); br.readLine();br.readLine();//去掉前两行无用信息 if((uninstallPathString=br.readLine())!=null){ uninstallPathString=uninstallPathString.replaceAll("UninstallString REG_SZ ", ""); //去掉无用信息 } String[] resultString=new String[4]; resultString[0]=nameString; resultString[1]=versionString; resultString[2]=publisherString; resultString[3]=uninstallPathString; if(resultString[0]==null) resultString=null; //没有名字的不显示 return resultString; } public static void main(String[] args) { new CheckSoftware(); } //列表 private class MyTable{ private JTable jTable; private Object[][] data=new Object[100][4]; private Object[] colNames= { "软件名称","版本号","出版商","卸载路径"}; private int p=-1; public MyTable(){ } public void addRow(Object[] data){ p++; if(p>=100) return ; this.data[p]=data; } public JTable getTable(){ jTable=new JTable(data,colNames); return jTable; } } }
相关文章推荐
- android:获取已经安装软件列表
- Java获取系统安装软件列表
- android:获取已经安装软件列表 .
- Linux Deepin怎样用终端查看已经安装的软件列表及卸载软件
- java获取安装软件列表(64位和32位)
- Ubuntu查询已经安装的软件
- Linux rpm 提示安装成功,可是查询的时候发现没有软件列表
- kali获得已经安装的软件列表
- kali获得已经安装的软件列表
- 如何获取本机已经安装了的软件的列表?
- 获取已经安装软件列表
- debian linux 中如何查看软件包是否已经安装和如何安装、卸载软件
- Linux下已经安装了vsftpd软件包,并且vaftpd服务已启动,为什么输入命令ftp时还是提示command not found
- Hyperledger Fabric SDK 示例fabric-samples-《balance-transfer》之十一《查询已经安装/实例化的chaincode》
- 用友畅捷通系列软件运行单据列表查询时报“错误‘6’ 溢出”错误!
- Centos怎样查看已经安装的软件
- 1.python获取windows软件安装列表
- Zypper——suse软件查询 安装 升级 与 软件源编辑
- java学习心得——添加列表查询功能
- Pyqt 获取windows系统中已安装软件列表