Bonjours à tous.

J'ai écrit une petite fonction en C pour accéder facilement à la BDR, malheureusement elle ne me donne pas toujours le résultat exacte suivant d'ou je l'appelle dans mon programme. Quand le resultat est érroné la fonction retourne une chaine vide.
Voici le code de la fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
void LectureBDR (char *adresse,char *valeur,char *mem )
{
    HKEY clefReg;
    DWORD tailleClef;

    RegOpenKeyEx(
             HKEY_LOCAL_MACHINE,
             adresse,
             0, //réservé
             KEY_ALL_ACCESS, //Tout accès
             &clefReg
             );
    RegQueryValueEx(clefReg,valeur , 0, NULL, (BYTE*)mem, &tailleClef);

    RegCloseKey(clefReg);
}
je l'appelle comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
char mem[256] = ""; 
LectureBDR (
    "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon",
    "Shell",mem
    );
j'ai constaté que le fait de créer une variable quelconque et inutile à la première ligne de la fonction ( "int jeSertARien" par ex.) corrigé parfois le problème... Bref c'est très étrange ... pour moi en tout cas.
Si quelqu'un pouvait m'éclairer ce serai fantastique.
Merci