java操作注册表1

来源:百度文库 编辑:神马文学网 时间:2024/04/30 07:31:29
zz from http://java.luanzhao.cn/9/75719190364.html

Java操作windows注册表

Java语言就以其平台独立性而受到了许多编程者的选择,如果让它来操作注册表的话,好像
就失去了它的这个特点,然而在实际的编程中,有时候我们很需要在注册表中存储软件的有
关信息,以方便下次启动的时候初始化或者检查注册信息(假设我们在windows平台下)!那么
究竟用java可以操作windows的注册表吗?
在jdk1.4以前的版本中,那是不可能的,只能用JNI来实现,然而在1.4以及以后的版本中我们
就可以用java.util.prefs包中的Preferences这个类来进行有关的操作!有关Preferences的
有关构造函数和方法我在这里就不多说了,你可以去参考java的API文档!我就直接说说怎么
来用代码实现吧!
首先得到Preferences的一个对象,这个对象就规定了你要在注册表的哪个位置写入信息,即
节点.然后再用put(String key,String value)或者putInt(),tDouble()...等来给有关项赋
值.
下面我就以我的java媒体播放器中的代码为例来详细说明一下:
import java.util.prefs.*;

public class Registery{

String keys = {"version","initial","creator"};
String values = {"1.3","ini.mp3","caokai1818@sina.com"};

//把相应的值储存到变量中去
  public void writeValue(){

  //在注册表的HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs下写入注册表值.
  Preferences pre = Preferences.systemRoot().node("/javaplayer");
  for(int i = 0; i < keys.length; i++){
    pre.put(keys,values);
  }
  //上面也就规定了version=1.3,initial=ini.mp3,creator=caokai18182sina.com
}
public static void main(String args){
  Registery reg = new Registery();
  reg.writeValue();
}
}

执行上面的代码则在注册表的HKEY_LOCAL_MACHINE\Software\JavaSoft\prefs\javaplayer
项下写入了有关值.
最后再说明几点:
1:你的节点的首字母不要大写,不然在注册表中的项前就加了一个“/”;
2:注册表中的值也可以导入到一个XML文件中,具体方法见有关文档.
3:如果把代码中的Preferences pre = Preferences.systemRoot().node("/javaplayer");
 换成Preferences pre = Preferences.userRoot().node("/javaplayer");则相应的
HKEY_LOCAL_MACHINE就成为HKEY_LOCAL_USER