日期:2014-05-18  浏览次数:20689 次

JAVA 修改注册表问题
老大有这么个需求,他想找到windows下的所有注册表,然后进行修改。
比如 包含 baidu 字样的  全部都修改为 google。本菜鸟百度了一下 说是用Preferences类 可以对注册表进行操作,看了一下都是取节点进行操作,问题是怎么遍历所有的啊,所有的他都要改啊。有没有大神明白帮忙指点指点。实在是摸不着头绪。
注册表 java windows

------解决方案--------------------

import java.util.Iterator;

import ca.beq.util.win32.registry.RegistryKey;
import ca.beq.util.win32.registry.RegistryValue;
import ca.beq.util.win32.registry.RootKey;
import ca.beq.util.win32.registry.ValueType;

public class CaRegTest1 {

public static void main(String[] args) {

//列出HKEY_CURRENT_USER的子键
RegistryKey current_user = new RegistryKey(RootKey.HKEY_CURRENT_USER);
if(current_user.hasSubkeys()){
Iterator<RegistryKey> keys = current_user.subkeys();
while(keys.hasNext()) {
RegistryKey k = keys.next();
System.out.println(k.getName());
}
}

//列出 HKEY_CURRENT_USER/Environment 的所有键值的名称、类型和数据
RegistryKey env = new RegistryKey(RootKey.HKEY_CURRENT_USER,"Environment");
if(env.hasValues()) {
Iterator<RegistryValue> values = env.values();
while(values.hasNext()) {
RegistryValue v = values.next();
System.out.println(v.getName()+"\t"+v.getType());
System.out.println("\t"+v.getData());
}
}

//写入注册表
RegistryKey newKey = new RegistryKey(RootKey.HKEY_CURRENT_USER,"Environment\\NewKey");
newKey.create();//创建新的键HKEY_CURRENT_USER/Environment/NewKey
RegistryValue value = new RegistryValue("My Paht",ValueType.REG_SZ,"hahah\\lalal");
newKey.setValue(value);//在新创建的键里写入键值,在注册表中按F5刷新一下能看到变化了吧
}

}


参考下,使用的是jRegistryKey,解压出jRegistryKey.jar和jRegistryKey.dll引入项目中