`

jRegistryKey读取注册表的例子及jar包下载

阅读更多
    出于跨平台的考虑,java在当初设计的时候,并没有考虑用java读取windows的注册表。但是其后,开发者经常遇到处理注册表的情况,所以java在后续的jdk中新增了一个折中的设计。即可以让那些实际需要处理注册表的开发者可以满足心愿,又避免开发者过度使用操作注册表的类库,而影响java的跨平台性。
    Java的jdk提供的处理注册表的类,只能在HKEY_LOCAL_MACHINE.SOFTWARE.JavaSoft.Prefs对注册表做增删改查的操作.


例如:
// save regist flag to regedit
Preferences pre = Preferences.systemRoot().node("/jedmp");
pre.put("regist", "regist的信息");
//read and print regist flag
System.out.print(pref.get("regist","regist not found"));

    实际开发者可能希望,java不要有这样的限制,而可以直接操作windows的所有注册表.java虽然没有直接满足我们的要求,但是第三方的jRegistryKey却可以帮助我们.
首先,从附件中将jRegistryKey.jar和jRegistryKey.dll下载下来.注意,jRegistryKey.dll文件要放在项目的根目录下.然后即可直接操作windows的全部注册表内容了.


例如:
// create a new key, "Test", under HKLM
RegistryKey r = new RegistryKey(RootKey.HKEY_LOCAL_MACHINE, "Test");
if(!r.exists()) {
r.create();
} // if 

// create value entries
RegistryValue v = new RegistryValue("aString", ValueType.REG_SZ, "test");
r.setValue(v);

v.setName("aDword");
v.setType(ValueType.REG_DWORD);
v.setData(new Integer(0x1001001));
r.setValue(v);

// read value entries
Iterator i = r.values();
while(i.hasNext()) {
v = (RegistryValue)i.next();
System.out.println(v.toString());
} // while

// delete registry key
r.delete();

对于java操作注册表更详细的说明,请见
http://www.iteye.com/topic/82291
分享到:
评论
1 楼 ydm135 2018-11-12  
解决了我的部分问题,写的不是我想要的位置。,

相关推荐

Global site tag (gtag.js) - Google Analytics