jaav读取注册表

读取的注册表类型仅限于:REG_SZ

private static final String REGQUERY_UTIL = "reg query ";
    private static final String REGSTR_TOKEN = "REG_SZ";
    private static final String REGDWORD_TOKEN = "REG_DWORD";
 
    //java注册表地址
    private static final String REGEDIT_FOLDER_CMD = REGQUERY_UTIL
            + "\"HKLM\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.6.0_27"
            + "\" /v JavaHome";
    //Tomcat注册表地址
    private static final String REGEDIT_TOMCAT_CMD=REGQUERY_UTIL
    		+"\"HKLM\\SOFTWARE\\Apache Software Foundation\\Tomcat\\6.0\\Tomcat6"
    		+"\" /v InstallPath";
    /**
     * 读取注册表 获得java tomcat所对应该的安装目录
     * @param regeditPath 注册表地址
     * @return
     */
    public static String getMyDocumentsFromWinRegistry(String regeditPath) {
        try {
            Process process = Runtime.getRuntime().exec(regeditPath);
            StreamReader streamreader = new StreamReader(process.getInputStream());
 
            streamreader.start();
            process.waitFor();
            streamreader.join();
            String result = streamreader.getResult();
            int p = result.indexOf(REGSTR_TOKEN);
            if (p == -1)
                return null;
            return result.substring(p + REGSTR_TOKEN.length()).trim();
        } catch (Exception e) {
            return null;
        }
    }
    /**
     * 内部类
     * 解决中文乱码问题
     */
    static class StreamReader extends Thread {
        private InputStream is;
        private StringWriter sw;
 
        StreamReader(InputStream is) {
            this.is = is;
            sw = new StringWriter();
        }
        @Override
        public void run() {
            try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
                int c = -1;
                while ((c = is.read()) != -1){
                bos.write(c);
                }                
                sw.write(new String(bos.toString("GBK").getBytes("UTF-8")));
            } catch (IOException e) {
            	e.printStackTrace();
            }
        }
        String getResult() {
            return sw.toString();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值