Java 打印首选项节点的子节点
我想打印首选项节点的子节点。我编写了以下代码:Java 打印首选项节点的子节点,java,oracle,registry,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); }
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_本地_机器/软件”)代码>
而不是
p=p.node(“HKEY_LOCAL_MACHINE/SOFTWARE/ORACLE”)代码>
当我打印p
的孩子们时,我得到了:ORACLE
!怎么可能呢?其他孩子呢?(有..我通过注册表编辑器看到了)
看起来它存储的是以前运行中附加在/SOFTWARE
旁边的值。我认为您应该在此处使用首选项.systemRoot()
而不是首选项.userRoot()
。后者映射到HKEY_当前用户
对于Windows,路径应该是HKEY\U LOCAL\U MACHINE\SOFTWARE\ORACLE
,然后在字符串中转义它,如HKEY\U LOCAL\U MACHINE\\SOFTWARE\\ORACLE
注意:我自己没有试过。没有,我键入了:p=p.node(“HKEY\U LOCAL\U MACHINE\\SOFTWARE\\ORACLE”)
我在考虑是否应该在这里使用Preferences.systemRoot()
而不是Preferences.userRoot()
。后者映射到HKEY_CURRENT_USERI我现在还不清楚,因为我没有访问windows机器进行进一步的测试/调试