注册表为windows特有的,而java能跨平台
所以我觉得java处理注册表要通过JNI来处理的。

解决方案 »

  1.   

    只有特定的注册表目录进行读写,但是不能任意的目录进行操作。下面是一个例子,这个例子网上也有。
    134.怎样用java读写注册表的信息 
      import java.util.prefs.*
    Preferences prefs = Preferences.userRoot().node("Test");
    prefs.put("serverAddress","localhost");
    String serverAddress = prefs.get("serverAddress","Unkown");
    String strPort = prefs.get("port"," ");
     !!!JDK1.4才支持!!!!!
    225.注册表 关键字:Preferencepackage net.zukowski.ibm;import java.io.*;
    import java.util.prefs.*;public class Preference_test {
      
      public static void main(String args[]) {    String denominations[] = 
          {"One", "Two", "Five", "Ten", "Twenty"};
        String pictures[] = 
          {"Washington", "Jefferson", "Lincoln", "Hamilton", "Jackson"};//NodeChangeListener 负责通知您节点被添加和除去的时间
        NodeChangeListener nodeChangeListener = 
          new NodeChangeListener() {
            public void childAdded(NodeChangeEvent event) {
              Preferences parent = event.getParent();
              Preferences child  = event.getChild();
              System.out.println(parent.name() + " has a new child " +
                child.name());
            }
            public void childRemoved(NodeChangeEvent event) {
              Preferences parent = event.getParent();
              Preferences child  = event.getChild();
              System.out.println(parent.name() + " lost a child " +
                child.name());
            }
          };
          
    //PreferenceChangeListener 告诉您值的变化。
        PreferenceChangeListener preferenceChangeListener = 
          new PreferenceChangeListener() {
            public void preferenceChange(PreferenceChangeEvent event) {
              String key = event.getKey();
              String value = event.getNewValue();
              Preferences node = event.getNode();
              System.out.println(node.name() + " now has a value of " + 
                value + " for " + key);
            }
          };    // Look up user root
        Preferences prefs = 
          Preferences.userRoot().node("/net/zukowski/ibm");    // Add listeners
        prefs.addNodeChangeListener(nodeChangeListener);
        prefs.addPreferenceChangeListener(preferenceChangeListener);    // Save a bunch of key-value pairs
        for (int i=0, n=denominations.length; i < n; i++) {
          prefs.put(denominations[i], pictures[i]);
        }    // Display all the entries
        try {
          String keys[] = prefs.keys();
          for (int i=0, n=keys.length; i < n; i++) {
            System.out.println(keys[i] + ": " + prefs.get(keys[i], "Unknown"));
          }
        } catch (BackingStoreException e) {
          System.err.println("Unable to read backing store: " + e);
        }    // Create child
        Preferences child = Preferences.userRoot().node("/net/zukowski/ibm/foo");
        //在HKEY_CURRENT_USER\Software\JavaSoft\Prefs中    // Save to XML file
        try {
          FileOutputStream fos = new FileOutputStream("prefs.out");
          prefs.exportNode(fos);
        } catch (Exception e) {
          System.err.println("Unable to export nodes: " + e);
        }    // Clean up
        
        try {
          prefs.removeNode();
        } catch (BackingStoreException e) {
          System.err.println("Unable to access backing store: " + e);
        } 
    /*
        Preferences prefs = 
          Preferences.systemRoot().node("HKEY_CURRENT_USER/Software/Cajcd");
        prefs.put("justcajtest", "justcajtest");
        //在HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs中
        //最好不要大写    // Display all the entries
        try {
          String keys[] = prefs.keys();
          for (int i=0, n=keys.length; i < n; i++) {
            System.out.println(keys[i] + ": " + prefs.get(keys[i], "Unknown"));
          }
        } catch (BackingStoreException e) {
          System.err.println("Unable to read backing store: " + e);
        }
    */
      }
    }