Bonjour,
je cherche à ajouter une clé dans la base de registre windows,
je crois savoit qu'il faut pour cela passer par la JNI.
J'ai esaye de charger la dll advapi32, et de passer par ses méthodes. Mais cela me crée une erreur.
Peut - on se servir de n'importe quel dll, ou faut il des dll specifiques faites pour dialoguer avec Java?
voici un bout de code que j'utilise, pouvez vous me dire si il y a quelque chose qui cloche?
static long HKEY_LOCAL_MACHINE=0x80000002;
static long REG_OPTION_NON_VOLATILE = 0x0; // ' Key is preserved when system is rebooted
static long STANDARD_RIGHTS_ALL = 0x1F0000;
static long SYNCHRONIZE = 0x100000;
static long READ_CONTROL = 0x20000;
static long STANDARD_RIGHTS_READ = (READ_CONTROL);
static long STANDARD_RIGHTS_WRITE = (READ_CONTROL);
static long KEY_CREATE_LINK = 0x20;
static long KEY_CREATE_SUB_KEY = 0x4;
static long KEY_ENUMERATE_SUB_KEYS = 0x8;
static long KEY_NOTIFY = 0x10;
static long KEY_QUERY_VALUE = 0x1;
static long KEY_SET_VALUE = 0x2;
static long KEY_READ = ((STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~ SYNCHRONIZE));
static long KEY_WRITE = ((STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~ SYNCHRONIZE));
static long KEY_EXECUTE = (KEY_READ);
static long KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL | KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY | KEY_CREATE_LINK) & (~ SYNCHRONIZE));
static {System.loadLibrary("advapi32");}
private static native long RegCloseKey(long hKey);
private static native long RegDeleteKey(long hKey,String lpSubKey);
private static native long RegCreateKeyEx(long hKey,String lpSubKey,long Reserved,String lpClass,long dwOptions,long samDesired,long lpSecurityAttributes,long phkResult,long lpdwDisposition);
private static native long RegOpenKeyEx(long hKey,String lpSubKey,long Reserved,long samDesired,long phkResult);
private void inscritBdRegistre()
{
long loc_result=0;
long loc_disp=0;
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources\\FriFollies",0l,KEY_ALL_ACCESS,loc_result)==0l) System.out.println("c bon");
else System.out.println("c bad");
}
Tytia