JavaからWindowsのレジストリ項目やショートカットを作成できるRoxes Win32 for Java
JavaでWindowsのショートカット(lnkファイル)を作成したかったので、この前のエントリに書いたNLinkを使おうかと思ったんですが、この辺のShell機能にはCOMが絡んでくるので、Win32APIを使うにしても結構面倒臭い。
ショートカットをメソッド一発で作成できるような便利なライブラリがないかなと思って探したところ、Roxes Win32 for Javaというものを発見しました。
SourceForge.net: Orangevolt Ant Tasks
上記のOrangevolt Ant Tasksプロジェクトの中に含まれている、roxes-win32というパッケージがそれです。
ショートカット作成の他にも、レジストリをいじったりWindows固有のフォルダ名を取得したりできる、優れもののライブラリのようです。
簡単に使い方を調べてみました。
- com.roxes.win32.LnkFile - ショートカットの作成
public static void main(String[] args) { LnkFile shortcut = new LnkFile("C:\\temp", "Launch Notepad"); shortcut.setPath("C:\\WINDOWS\\notepad.exe"); shortcut.save(); }
- com.roxes.win32.Registry - レジストリの操作
public static void main(String[] args) { Registry reg = new Registry(Registry.HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Run"); for (String name : reg.valueNames()) { String value = reg.getStringValue(name); System.out.println(name + " => " + value); } }
(実行結果) ctfmon.exe => C:\WINDOWS\system32\ctfmon.exe swg => C:\Program Files\Google\GoogleToolbarNotifier\GoogleToolbarNotifier.exe
- com.roxes.win32.Win32 - Windows固有フォルダの取得
public static void main(String[] args) { System.out.println(Win32.getSpecialDirectory( Win32.SPECIALDIRECTORY_PERSONAL_DESKTOP)); System.out.println(Win32.getSpecialDirectory( Win32.SPECIALDIRECTORY_PERSONAL_SEND_TO)); }
(実行結果) C:\Documents and Settings\Kaisei Hamamoto\デスクトップ C:\Documents and Settings\Kaisei Hamamoto\SendTo
これ、めちゃくちゃ便利だと思います。