• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

java对windows注册表进行增删查

JAVA相关 水墨上仙 1534次浏览

用 java 对windows 注册表 进行编辑是一个比较困难的任务,因为java的平台无关性。但是java提供了Runtime类,它允许把原始的command命令直接发生送给OS,所以可以通过这个类来实现对 注册表 简单有效的管理。

package info.itlanguageexpress.java;
import java.io.*;
public class RegKeyManager {
    private final String TYPES[] = { "SZ", "BINARY", "DWORD", "QWORD", "DWORD_LITTLE_ENDIAN", "QWORD_LITTLE_ENDIAN", "DWORD_BIG_ENDIAN", "EXPAND_SZ", "LINK", "MULTI_SZ", "NONE", "RESOURCE_LIST" };
    private String type = "", value = "", key = "";
    protected void query(String loc, String k) throws Exception {
        Process p = Runtime.getRuntime().exec("reg QUERY \"" + loc + "\" /v \"" + k + "\"");
        BufferedReader in = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
        String out = "";
        while ( ( out = in.readLine() ) != null ) {
            if (out.matches("(.*)\\s+REG_(.*)")) { break; }
        }
        in.close();
        String str[] = out.split("    ");
        int b = 0;
        for (int a=0; a < str.length; a++) {
            if ( str[a].replace(" ", "").matches("\\S+") ) {
                switch (b) {
                    case 0: key = str[a]; break;
                    case 1: type = str[a]; break;
                    case 2: value = str[a]; break;
                }
                b++;
            }
        }
    }
    protected String getKey() { return key; }
    protected String getType() { return type; }
    protected String getValue() { return value; }
    protected boolean add(String loc, String name, String dType, String value) throws Exception {
        boolean comp = false, valid = false;
        for (int a = 0; a < TYPES.length; a++) {
            if (dType.equalsIgnoreCase("REG_" + TYPES[a])) { valid = true; break; }
        }
        if ( valid ) {
            Process p = Runtime.getRuntime().exec("reg ADD \"" + loc + "\" /v \"" + name + "\" /t \"" + dType + "\" /d \"" + value + "\"");
            BufferedReader in = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
            String out = "";
            while ( (out = in.readLine() ) != null ) {
                if (out.equalsIgnoreCase("The operation completed successfully.")) { comp = true; }
            }
            in.close();
        }
        return comp;
    }
    protected boolean delete(String loc, String key) throws Exception {
        boolean comp = false;
        Process p = Runtime.getRuntime().exec("reg DELETE \"" + loc + "\" /v \"" + key + "\" /f");
        BufferedReader in = new BufferedReader( new InputStreamReader( p.getInputStream() ) );
        String out = "";
        while ( ( out = in.readLine() ) != null ) {
            if (out.equalsIgnoreCase("The operation completed successfully.")) { comp = true; }
        }
        in.close();
        return comp;
    }
}

调用方法

    public static void main(String[] args) {
        try {
            RegKeyManager rkm = new RegKeyManager();
//            64位系统的注册表目录
//            rkm.query("HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\Tencent\\QQ2009", "Install");
//            32位系统的注册表目录
            rkm.query("HKEY_LOCAL_MACHINE\\SOFTWARE\\Tencent\\QQ2009", "Install");
            System.out.println("KEY: " + rkm.getKey() + " DATA TYPE: " + rkm.getType() + " DATA VALUE: " + rkm.getValue());
//            rkm.add("HKEY_LOCAL_MACHINE\\SOFTWARE\\Tencent\\QQ2009","TESTING","REG_SZ","VALUE DATA");
//            rkm.delete("HKEY_LOCAL_MACHINE\\SOFTWARE\\Tencent\\QQ2009","TESTING");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明java对windows注册表进行增删查
喜欢 (0)
加载中……