打印首选节点的子节点

时间:2013-01-08 10:32:15

标签: java oracle registry

我想打印首选节点的子节点。我写了以下代码:

private void printOracleDefaults() {
    Preferences p = Preferences.userRoot();
    p = p.node("/HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE");
    try {
       for(String s : p.childrenNames())
          System.out.println(s);
    } catch (BackingStoreException e) {
       //bla bla..
       e.printStackTrace();
    }
}

虽然ORACLE有孩子,但上面的方法不会打印任何内容:

Children of ORACLE

我做错了什么或误解了?

更新

我写了p = p.node("HKEY_LOCAL_MACHINE/SOFTWARE");

而不是

p = p.node("HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE");

当我打印p的孩子时,我得到了:ORACLE!这怎么可能?那么其他所有孩子呢? (有......我通过注册表编辑器看到了它们)

看起来它存储了/SOFTWARE旁边附加的先前运行中的先前值。

1 个答案:

答案 0 :(得分:0)

我认为你应该在这里使用Preferences.systemRoot()代替Preferences.userRoot()。后者映射到HKEY_CURRENT_USER。

对于Windows,路径应为HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,然后在HKEY_LOCAL_MACHINE\\SOFTWARE\\ORACLE之类的字符串中将其转义。

注意:我自己没试过。