我想打印首选项节点的子节点。我编写了以下代码:
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 有子项,上面的方法不会打印任何内容:
我做错了什么或误解了什么?
更新:
我写了p = p.node("HKEY_LOCAL_MACHINE/SOFTWARE");
而不是
p = p.node("HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE");
当我打印 p
的子元素时,我得到:ORACLE
!这怎么可能?那么其他 child 呢? (有..我是通过注册表编辑器看到的)
看起来它正在存储以前运行中附加到 /SOFTWARE
旁边的值。
最佳答案
我认为你应该在这里使用 Preferences.systemRoot()
而不是 Preferences.userRoot()
。后者映射到 HKEY_CURRENT_USER。
对于 Windows,路径应为 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE
,然后在字符串内对其进行转义,如 HKEY_LOCAL_MACHINE\\SOFTWARE\\ORACLE
。
注意:我自己没有尝试过。
关于java - 打印首选项节点的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14212971/