
Java で、Windowsのレジストリを検索する。

標準の java.util.prefs.WindowsPreferences では、Software\\JavaSoft\\Prefs 以下の
レジストリに対して、読み書きします。

今回は、別のレジストリを読み出す必要があります。

WindowsPreferences の WINDOWS_ROOT_PATH を、Software\\Muratec などに設定することで、
対応できますが、このクラスは、パッケージローカルな為、直接拡張が出来ません。
また、native メソッドも使用しているため、ソースをコピーして別クラスで
作成することもできません。
そこで、このクラスそのものを書き換える事で、対応しました。

検索した結果、Keyは、小文字でないと受け付けないのですが、データとして、
大文字のKeyが検索されます。この関係で、１回目の検索時と、２回目以降の検索時で、
検索データが異なってしまう現象が発生しました。
これは、java.util.prefs.AbstractPreferences.java で、子ノードをキャッシュしている
HashMap から、Key情報 を TreeSet に移すときに、発生しており、toLowerCase() して
セットすれば、解消されます。

これらの２つのクラスを、修正後、Javaのシステムよりも早くロードさせる為に、
endorsed を利用します。

endorsed は、jar 化したクラスを、<JAVA_HOME>/jre/lib/endorsed 以下にコピーすることで、
システムクラスと置き換える（先に読み込ませる）ことが出来ます。 ※１

※１
   <JAVA_HOME>/lib/endorsed/ 以下でも出来るはずですが、うまくいきませんでした。
   現状は、<JAVA_HOME>/jre/lib/endorsed 以下におくか、java 起動時の引数で
$ java -Djava.endorsed.dirs=<プロダクトのjarファイルがあるディレクトリ> ...
   以前は、<JAVA_HOME>/jre/lib/endorsed 以下におく方法が有効でしたが、現在は不明です。

※２
  Tomcatは、bin\setclasspath.bat で、endorsed ディレクトリを設定しています。

	rem Set the default -Djava.endorsed.dirs argument
	set JAVA_ENDORSED_DIRS=%BASEDIR%\bin;%BASEDIR%\common\lib

	BASEDIR は、CATALINA_HOME が、セットされています。

	よって、Tomcatで使用する場合は、<CATALINA_HOME>/endorsed フォルダに、
	ogPreferences.jar を配置する必要があります。


