Bonjour,

je développe une application et j'enregistre quelques clés pour son paramètrage dans HKEY_CURRENT_USER.

voici un exemple de 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
void MaClasse::MethodeDeMiseAJourDeLaCle()
{
    HKEY HandleKey;
    DWORD dwBuffer = 896; // integer
    // On initialise la taille du buffer à 4 (taille d'un DWORD)
    unsigned long ulTailleBuffer = 4;
    string oChemin = "Software\\monAppli\\Parametre";
    string oNomCle = "KeyName";
 
 // Ouverture de la clé qui nous intéresse dans la base de registre
    if( RegOpenKeyEx( HKEY_CURRENT_USER, oChemin.c_str(), NULL, KEY_SET_VALUE, &HandleKey ) == ERROR_SUCCESS )
    {
        RegSetValueEx( HandleKey, oNomCle.c_str(), 0, REG_DWORD, (CONST BYTE*) &dwBuffer, ulTailleBuffer );  
        RegCloseKey( HandleKey );
    }
}

Le problème est que la clé est bien enregistrée (j'obtiens le résultat escompté sur l'application), mais après quelques jours, elle est effacée. Je ne fais appel à aucun moment à du code qui pourrait l'effacer...
Je trouve ca bizarre.

N.B. : le système sur lequel l'application tourne n'est jamais arreté et tourne sur XP Professionnel.
De plus, la clé que j'ajoute est déjà présente dans la base de registre. La fonction ci-dessus la met simplement à jour. C'est après la mise à jour qu'elle disparait (mais pas instantanément). Je pense que windows restaure quelques parametres ou clés et efface la mienne, non ?

Auriez-vous une piste de reflexion ?

Merci