Regedit

Résolu
Signaler
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009
-
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009
-
Voila j'ai un probleme j'essaye de parcourir le regedit notemment a l'aide d'une fonction recursive a base de RegOpenKeyEx ();
Seulement j'ai un probleme, le programme s'enfonce un petit peu dans l'arborescence puis ne peut plus ouvrir de dossier (=subkeys).

Erreur : " Impossible de creer un fichier deja existant"

Ce qui est byzarre c'est que si j'ouvre ma base de registre et qu'a l'aide de la souris je la parcours et que je lance mon bout de code, alors il arrive a parcourir tout les endroits ou je me suis ballade.

Voala....MAis comment Est ce donc que C'est PossiBLe o_0 !

Merci d'avance ;)

9 réponses

Messages postés
6
Date d'inscription
mardi 22 juin 2004
Statut
Membre
Dernière intervention
29 novembre 2004

j'ai le même problème que toi concernant la fonction de l'api RegOpenkeyEx!!!
Il n'y a donc pas de problème dans ton code, mais plutôt dans l'utilisation de cette fonction de "merde" RegOpenkeyEx, qui ne marche soudainement plus ?
Moi, je répertorie dans un arbre toutes les "keys", et en créant cet arbre, la fonction RegOpenkeyEx() plante, mais elle plante vraiment quand elle veut, elle marche correctement pour la plupart des clés mais pour certaines, elle plante sans aucune raison.
la solution que j'ai trouvée, c'est d'utiliser RegCreateKeyEx(), qui a deux modes de fonctionnement, soit elle crée la clé si elle n'existe pas, soit elle ouvre sans la changer (toi, c'est ce qu tu veux)...
j'suis déçu des admins... :(
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Faut pas faire de recursivite, il y a des fonctions d'enum dispos a cet effet.

ciao...
BruNews, MVP VC++
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

Bah en fait j'utilise bien RegEnumKeyEx () et RegEnumValue (), mais si je veux parcourir toute l'arborescence je peux apsser apr une fonction recursive non?
Et pourquoi il faut aps utiliser la recursivite a cause de la pile qui explose?
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
La gestion de la pile est toujours un risque quand on utilise la recursivite mais ce n'est pas la que l'erreur se produit dans ton cas, il semble bloquer avant.
Verifie que tu n'ouvres pas un handle de sous cle sur sur une cle parente deja ouverte.

ciao...
BruNews, MVP VC++
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Si ton code détruit systématiquement tous les objets et les handles que tu ouvres, la récursivité ne pose aucun problème.

Maintenant comme BruNews te le fait remarquer, l'erreur provient surement de ton code.

Shell
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

Mouai ce que je comprend pas c'est pourquoi lorsque que je parcours l'arborescence dans le regedit et que je lance mon programme il n'y a aucun probleme lors de l'ouverture.
Et que signifie cette erreur "Impossible de creer un fichier deja existant", j'essaye aps de crees un fichier puisque je fais RegOpenKeyEx().
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

A oui autre chose si par exemple l'ouverture de l'adresse A et echoue et que dans le programme je le prevoie et que je mette RegOpenKeyEx (A) alors la l'ouverture fonctionne.

Genre:

Fonction Recursive ()
{
if (RegOpenKeyEx (adresse)!=ERROR_SUCCCES) //adresse est la variable contenant l'adresse suivante
RegOpenKeyEx (A);
....
}
La ca marche, evidemment ca plante quelques dossiers plus loin.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
the_last_pharaon > "j'suis déçu des admins" alors la vraiment c'est quoi le prob avec les admins ??? je ne vois pas.

ciao...
BruNews, MVP VC++
Messages postés
56
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
3 décembre 2009

Ouai te vexe pas Brunews, je connais en personne the_last_pharaon , il aime bien titiller mais il a rien contre toi, en tout cas la soluce semble bien etre RegCreateKeyEx ()...
Byzare Byzare tout ca!