Revision: 6692
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at June 7, 2008 17:42 by narkisr
Initial Code
import java.lang.reflect.Method; import java.util.prefs.Preferences; public class JavaRegistryHack { private static final int HKEY_CURRENT_USER = 0x80000001; private static final int KEY_QUERY_VALUE = 1; private static final int KEY_SET_VALUE = 2; private static final int KEY_READ = 0x20019; public static void main(String args[]) { final Preferences userRoot = Preferences.userRoot(); final Preferences systemRoot = Preferences.systemRoot(); final Class clz = userRoot.getClass(); try { final Method openKey = clz.getDeclaredMethod("openKey", byte[].class, int.class, int.class); openKey.setAccessible(true); final Method closeKey = clz.getDeclaredMethod("closeKey", int.class); closeKey.setAccessible(true); final Method winRegQueryValue = clz.getDeclaredMethod( "WindowsRegQueryValueEx", int.class, byte[].class); winRegQueryValue.setAccessible(true); final Method winRegEnumValue = clz.getDeclaredMethod( "WindowsRegEnumValue1", int.class, int.class, int.class); winRegEnumValue.setAccessible(true); final Method winRegQueryInfo = clz.getDeclaredMethod( "WindowsRegQueryInfoKey1", int.class); winRegQueryInfo.setAccessible(true); byte[] valb = null; String vals = null; String key = null; Integer handle = -1; //Query Internet Settings for Proxy key = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings"; handle = (Integer) openKey.invoke(userRoot, toCstr(key), KEY_READ, KEY_READ); valb = (byte[]) winRegQueryValue.invoke(userRoot, handle.intValue(), toCstr("ProxyServer")); vals = (valb != null ? new String(valb).trim() : null); System.out.println("Proxy Server = " + vals); closeKey.invoke(Preferences.userRoot(), handle); // Query for IE version key = "SOFTWARE\\Microsoft\\Internet Explorer"; handle = (Integer) openKey.invoke(systemRoot, toCstr(key), KEY_READ, KEY_READ); valb = (byte[]) winRegQueryValue.invoke(systemRoot, handle, toCstr("Version")); vals = (valb != null ? new String(valb).trim() : null); System.out.println("Internet Explorer Version = " + vals); closeKey.invoke(Preferences.systemRoot(), handle); } catch (Exception e) { e.printStackTrace(); } } private static byte[] toCstr(String str) { byte[] result = new byte[str.length() + 1]; for (int i = 0; i < str.length(); i++) { result[i] = (byte) str.charAt(i); } result[str.length()] = 0; return result; }
Initial URL
Initial Description
A paste from a blog (http://lenkite.blogspot.com/2008/05/access-windows-registry-using-java.html) entry which demonstrates how to access windows registry in Java.
Initial Title
Accessing windows registry in Java
Initial Tags
java, windows
Initial Language
Java