用java访问windows注册表

用java访问windows注册表

 自从jdk1.4,java可以通过java.util.prefs包访问注册表,但访问的范围非常小,只能是HKLM和HKCU的javasoft子项下的prefs项(不知道我的理解是否正确?)。
 
  要想通过java访问整个注册表,可以通过开源代码给予实现。现在这样的开源很多,基本原理都差不多通过JNI实现的,如 http://trustice.com/java/jnireg/就是其中一个。

  准备工作:
  到trustice网站下载其API和dll文件。我下的是registry-3.1.3.zip(URL: ftp://ftp.gjt.org/pub/users/time/java/registry-3.1.3.zip)。解压后,在其下的bin文件夹下就有我们想要registry.jar和dll文件。
 
  轻装上阵
  第一步,在eclipse新建一个java项目-registry,并把jar文件引进来;把dll文件放到classpath下,如c:\winnt(windows)。
  第二步,建立一个简单的测试单元
package com.mascot.myregistry;

import com.ice.jni.registry.*;

public class test {
    public static void main(String[] str) {
        try {
              RegistryKey child = Registry.HKEY_LOCAL_MACHINE
                      .openSubKey("SOFTWARE\\Microsoft");

              RegistryKey create = child.createSubKey("Mascot", "");
              create.setValue(new RegStringValue(create,"hello1","hello000"));
              create.setValue(new RegStringValue(create,"hello2","hello222"));
              System.out.println(childs.getFullName());
        } catch (Exception e) {
              e.printStackTrace();
        }
    }

}
其中的child是本机注册表的HKLM\SOFTWARE\Microsoft,并通过createSubKey创建Mascot子项,通过setValue为Mascot创建两个REG_SZ子项hello1、hello2,数据分别是hello000,hello222
 
  第三步,运行程序,就可以看到注册表多了一个mascot项等等。

  当然,该开源的功能不仅如此,我们还可以实现对注册表进行CRUD,还可以通过RegistryKey的connectRegistry连接远程注册表。

你可能感兴趣的:(用java访问windows注册表)