SWTだとWindowレジストリアクセスできるらしい

自分では試していないけどメモ。

最後のサンプルは衝撃的です。Windowsのレジストリにアクセスして、DirectXのバージョンを取得するというものです。



/**
 * SWTを用いた Javaからレジストリをアクセスするサンプルプログラム。
 */
import java.io.StringWriter;

import org.eclipse.swt.internal.win32.OS;
import org.eclipse.swt.internal.win32.TCHAR;

/**
 * SWTを用いて Java言語から レジストリへのアクセスを行います。<br>
 * ここではDirectXのバージョンを取得するサンプルとなっています。
 * 
 * @author 渡辺義則
 */
public class SwtSampleReg {
    /**
     * SWTを用いた Javaからレジストリにアクセスして DirectXのバージョンを取得するサンプル
     */
    static void process() {
        final String entry = "SOFTWARE\\Microsoft\\DirectX";
        final int[] hKey = new int[1];
        try {
            int rc = OS.RegOpenKeyEx(OS.HKEY_LOCAL_MACHINE, new TCHAR(
                    OS.CP_INSTALLED, entry, true), 0,
                    0xF003F/* KEY_ALL_ACCESS */, hKey);
            if (rc != 0) {
                throw new IllegalArgumentException("RegOpenKeyExの呼び出しに失敗しました。"
                        + formatMessage(rc));
            }
            TCHAR buf = new TCHAR(OS.CP_INSTALLED, 256);
            final int[] len = new int[] { 256 };
            rc = OS.RegQueryValueEx(hKey[0], new TCHAR(OS.CP_INSTALLED,
                    "Version", true), 0, null, buf, len);
            if (rc != 0) {
                throw new IllegalArgumentException(
                        "RegQueryValueExの呼び出しに失敗しました。" + formatMessage(rc));
            }
            System.out.println("レジストリ上のDirectXのバージョンは["
                    + buf.toString(0, buf.strlen()) + "]です。");
        } finally {
            if (hKey[0] != 0)
                OS.RegCloseKey(hKey[0]);
        }
    }

// 後半省略

情報元:SWTを用いた JavaからWin32APIへのアクセス サンプル


ただのJavaでやる方法はなさそうで安心しました(IEのプロキシの情報とか勝手に抜いて外部と通信できるのか、気になって調べてました)。