1

設定ノードの子を印刷したい。私は次のコードを書きました:

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には子がありますが、上記のメソッドは何も出力しません。

ORACLEの子供たち

私が間違っていることや誤解していることは何ですか?

アップデート:

私が書いたp = p.node("HKEY_LOCAL_MACHINE/SOFTWARE");

それ以外の

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

の子を印刷すると、次のpようになりましたORACLE。それはどのように可能ですか?他のすべての子供たちはどうですか?(あります..レジストリエディターで見ました)

の隣に添付された以前の実行からの以前の値を保存していたよう/SOFTWAREです。

4

1 に答える 1

0

Preferences.systemRoot()ここの代わりに使うべきだと思いますPreferences.userRoot()。後者は HKEY_CURRENT_USER にマップされます。

Windows では、パスは である必要がHKEY_LOCAL_MACHINE\SOFTWARE\ORACLEあり、文字列内で のようにエスケープしますHKEY_LOCAL_MACHINE\\SOFTWARE\\ORACLE

注:私はこれを自分で試していません。

于 2013-01-08T10:40:57.193 に答える