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¥””);
という感じになります。

やむを得ない場合に利用すると良いでしょう。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)