You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Emmanuel Bourg (JIRA)" <ji...@apache.org> on 2008/04/30 13:17:55 UTC

[jira] Updated: (CONFIGURATION-312) WindowsConfiguration

     [ https://issues.apache.org/jira/browse/CONFIGURATION-312?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Emmanuel Bourg updated CONFIGURATION-312:
-----------------------------------------

    Component/s: Format

> WindowsConfiguration
> --------------------
>
>                 Key: CONFIGURATION-312
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-312
>             Project: Commons Configuration
>          Issue Type: New Feature
>          Components: Format
>            Reporter: Emmanuel Bourg
>             Fix For: 2.x
>
>
> This is a RFE to implement a configuration backed by the windows registry.
> It can be implemented using an external library such as the ICE JNI Registry :
> http://www.trustice.com/java/jnireg
> It could also be implemented by hacking around the private WindowsPreferences class from the JDK (with no guarantee it will work on later versions, on other VMs, or on environments with a SecurityManager). Here is an example using this approach and displaying the user's data directory :
> {code:java}
> Preferences winPrefs = Preferences.userRoot();
> Class cls = winPrefs.getClass();
> Method openKey = cls.getDeclaredMethod("openKey", byte[].class, int.class, int.class);
> openKey.setAccessible(true);
> Method closeKey = cls.getDeclaredMethod("closeKey", int.class);
> closeKey.setAccessible(true);
> Method winRegQueryValue = cls.getDeclaredMethod("WindowsRegQueryValueEx", int.class, byte[].class);
> winRegQueryValue.setAccessible(true);
> Method winRegEnumValue = cls.getDeclaredMethod("WindowsRegEnumValue1", int.class, int.class, int.class);
> winRegEnumValue.setAccessible(true);
> Method winRegQueryInfo = cls.getDeclaredMethod("WindowsRegQueryInfoKey1", int.class);
> winRegQueryInfo.setAccessible(true);
> Integer keyHandle = (Integer) openKey.invoke(winPrefs, toByteArray("Volatile Environment"), KEY_READ, KEY_READ);
> byte[] array = (byte[]) winRegQueryValue.invoke(winPrefs, keyHandle, toByteArray("APPDATA"));
> closeKey.invoke(winPrefs, keyHandle);
> System.out.println(new String(array));
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.