JavaでWindowsのレジストリを読む方法
あまり行儀はよくなくとも、必要に迫られて対応をせざるを得ないことも
ありますよね。
毎度っ、管理人イガジーです。
なんだかんだと言っても、事実上 Windowsを使っている人が多いので
Javaでもそれを意識せざるを得ない事があります。
Windowsの情報を得るためには、レジストリを読まなきゃならぬ事が
多いので、その方法をご紹介。
タネを明かすと、外部プログラム呼び出しを使います。
反則技みたいなものですが、5秒以内ならヨシとしましょう(お前はプロレスか?)
外部プログラム呼び出しは次のようにします。
String exec(String cmd) {
String rv=null;
try {
Runtime rt=Runtime.getRuntime();
Process p=rt.exec(cmd);
String r;
InputStream is=p.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
while((r=br.readLine())!=null) {
rv+=r+"\n";
}
try {
p.waitFor();
} catch (InterruptedException e2) {
e2.printStackTrace();
} // exeプロセスの終了待ち
int rr=p.exitValue();
if (rr!=0) {
rv=Integer.toString(rr)+"\n";
is=p.getErrorStream();
isr=new InputStreamReader(is);
br=new BufferedReader(isr);
while((r=br.readLine())!=null) {
rv+=r+"\n";
// System.out.println(r);
}
}
}catch(IOException ex) {
ex.printStackTrace();
} // end try exec
return rv;
}
そして、呼び出すWindowsプログラムは REG です。
コマンドプロンプトから
REG /?
とすれば、ざっと説明が出てきますが
例えば
REG QUERY “HKCU¥Control Panel¥Desktop”
とすると、Control PanelというキーのDesktopというサブキーの
レジストリが表示されます。
REG QUERY “HKCU¥Control Panel¥Desktop” /v Wallpaper”
とすると、その中の Wallpaper だけを表示させる事もできます。
先の exec()メソッドに、REGコマンドを食わせると
文字列が入手できるということになります。
使用例は
String desktop=exec(“REG QUERY ¥”HKCU¥¥Control Panel¥¥Desktop¥””);
という感じになります。
やむを得ない場合に利用すると良いでしょう。
この記事へのコメントはこちら