IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

RegSetValueEx - Ajout d'une clé et disparition de celle-ci après quelques jours


Sujet :

C++

  1. #1
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut RegSetValueEx - Ajout d'une clé et disparition de celle-ci après quelques jours
    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
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 85
    Points : 113
    Points
    113
    Par défaut
    Bonsoir,

    Comme tu le dis toi-même la clé existe déjà, tu ne fais que la modifier, c'est donc qu'un autre programme l'a créé à l'origine.

    Es-tu sûr que ce n'est pas ce dernier qui la remodifie? Lors d'une mise à jour, une tâche planifiée ou autre, par exemple.

  3. #3
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Si c'est le HKCU, il faut aussi regarder les evenements système...
    As tu, par exemple, une fenetre au login qui te dis qu'un profile temporaire va être chargé ?
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  4. #4
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par emiaille
    Comme tu le dis toi-même la clé existe déjà, tu ne fais que la modifier, c'est donc qu'un autre programme l'a créé à l'origine.
    Le code ci-dessus est un extrait du code de mise à jour d'une application.
    Bien entendu, c'est un programme (le pg d'installation) qui crée la clé.
    Ce programme n'est plus exécuté pour qu'il efface la clé...

    Citation Envoyé par emiaille Voir le message
    Es-tu sûr que ce n'est pas ce dernier qui la remodifie? Lors d'une mise à jour, une tâche planifiée ou autre, par exemple.
    Comme je l'ai dis plus haut, le code que j'ai mis fait partie d'une mise à jour. Le programme de MAJ enregistre d'autres clés mais pas celle dont je parle.

    Citation Envoyé par nicroman
    As tu, par exemple, une fenetre au login qui te dis qu'un profile temporaire va être chargé ?
    non, c'est un programme de mise à jour qui ne necessite aucune intervention de l'utisateur.

    Merci à vous deux
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par slim Voir le message
    non, c'est un programme de mise à jour qui ne necessite aucune intervention de l'utisateur.
    Je parle du login windows....
    Le HKCU est stocké dans le profile de l'utilisateur. Si windows n'arrive pas à charger le profile de l'utilisateur (pour X raisons, droits d'accès, chemin réseau non disponible, etc...) il crée un profile temporaire, qui n'est maintenu que pour une durée définie dans les policies (et je crois que par défaut c'est 1 semaine).
    D'autre part, sous Vista, il existe d'autres subtilités qui font que les anciens programmes continuent de fonctionner parceque Vista simule les anciennes fonctionalités.
    Pour un programme de mise à jour, il semble bizarre d'aller tapper dans le HKCU....
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  6. #6
    Membre expérimenté Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Points : 1 337
    Points
    1 337
    Par défaut
    Citation Envoyé par nicroman Voir le message
    As tu, par exemple, une fenetre au login qui te dis qu'un profile temporaire va être chargé ?
    Ok. j'avais mal compris. Merci.
    Alors pour répondre à ta question, le systeme ne possede qu'un profile. C'est le seul qui est chargé lors du démarrage du système (Windows XP et non VISTA). Aucun autre profil n'est créé (temporaire). D'autant plus que le système ne redémarre que rarement. En principe, il ne doit pas redémarrer.

    On m'a dit que ca pouvait être windows qui restaure la base de registre...
    Mais à quel moment ? pourquoi ? Dans quel cas ?

    Citation Envoyé par nicroman Voir le message
    Pour un programme de mise à jour, il semble bizarre d'aller tapper dans le HKCU....
    C'est un vieux système qui va enregistrer quelquels clés pour ses paramètres dans la base de registre. Donc pendant la mise à jour du système, il met à jour une clé déjà enregistrée dans la base de registre. C'est vrai que c'est un peu bizarre mais bon... c'est comme ca

    Merci.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  7. #7
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Tu peux utiliser regmon, de sysinternals, pour voir qui modifie ta clé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout dans une base
    Par semaj_james dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/06/2004, 16h23
  2. [LG]probleme d'ajout dans une liste chainée...
    Par misteryann dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2004, 20h28
  3. [JSP] Ajout d'une tache dans le planificateur Windows
    Par PhoneKilleR dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 12/09/2003, 15h10
  4. Ajout d'une colonne dans une table ...
    Par Djedjeridoo dans le forum SQL
    Réponses: 2
    Dernier message: 22/07/2003, 16h12
  5. [DOM] Ajout d'une instrution de processing
    Par corwin_d_ambre dans le forum Format d'échange (XML, JSON...)
    Réponses: 9
    Dernier message: 06/05/2003, 11h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo