[size=medium] 出于跨平台的考虑,java在当初设计的时候,并没有考虑用java读取windows的注册表。但是其后,开发者经常遇到处理注册表的情况,所以java在后续的jdk中新增了一个折中的设计。即可以让那些实际需要处理注册表的开发者可以满足心愿,又避免开发者过度使用操作注册表的类库,而影响java的跨平台性。
Java的jdk提供的处理注册表的类,只能在HKEY_LOCAL_MACHINE.SOFTWARE.JavaSoft.Prefs对注册表做增删改查的操作.[/size]
[size=medium]例如:[/size]
[size=medium] 实际开发者可能希望,java不要有这样的限制,而可以直接操作windows的所有注册表.java虽然没有直接满足我们的要求,但是第三方的jRegistryKey却可以帮助我们.
首先,从附件中将jRegistryKey.jar和jRegistryKey.dll下载下来.注意,jRegistryKey.dll文件要放在项目的根目录下.然后即可直接操作windows的全部注册表内容了.[/size]
[size=medium]例如:[/size]
[size=medium]对于java操作注册表更详细的说明,请见[/size]
[url]http://www.iteye.com/topic/82291[/url]
Java的jdk提供的处理注册表的类,只能在HKEY_LOCAL_MACHINE.SOFTWARE.JavaSoft.Prefs对注册表做增删改查的操作.[/size]
[size=medium]例如:[/size]
// 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"));
[size=medium] 实际开发者可能希望,java不要有这样的限制,而可以直接操作windows的所有注册表.java虽然没有直接满足我们的要求,但是第三方的jRegistryKey却可以帮助我们.
首先,从附件中将jRegistryKey.jar和jRegistryKey.dll下载下来.注意,jRegistryKey.dll文件要放在项目的根目录下.然后即可直接操作windows的全部注册表内容了.[/size]
[size=medium]例如:[/size]
// 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();
[size=medium]对于java操作注册表更详细的说明,请见[/size]
[url]http://www.iteye.com/topic/82291[/url]