Chercher des données du registre en VB6

Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015 - Modifié par Menerlach le 28/03/2015 à 10:40
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015 - 28 mars 2015 à 23:37
Bonjour

Je sais, il y a déjà des discutions sur ce sujet mais il n'est question que de créer ou supprimer une clé, écrire ou lire les données d'une clé, mon projet est différent.

Le but est d'accompagner le déplacement d'une application, par exemple déplacer D:\bidule\tartampion.exe en E:\machin\truc\tartampion.exe. Il ne suffit pas bien sûr de couper coller l'application, en plus il faut changer ses références dans le registre, en l'occurrence chercher toutes les données D:\bidule\tartampion.exe et les remplacer par E:\machin\truc\tartampion.exe.
Il s'agit donc de chercher des données dans la base de registre sans en connaitre la clé puis de modifier ces données.

Voila, voila, si jamais vous savez comment faire je vous en serais très reconnaissant.

Merci

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/03/2015 à 11:36
Bonjour,
Une telle recherche risque fort d'être très longue en exécution.
Même en ouvrant manuellement Regedit et en y lançant l'outil de recherche (donc avec l'outil Windows), une telle recherche prend beaucoup de temps !
La base de registre revêt "l'aspect d'un treeview" (avec des noeuds et leurs enfants (voire des noeuds enfants d'enfant, etc ...)
Y rechercher une clé, une valeur, un texte, etc ... implique donc (puisque tu cherches en outre TOUTES les occurrences) une recherche récursive assez fastidieuse sur la totalité !
Si tu y tiens, il va te falloir transposer pour VB6 ce que tu peux lire ici :
http://jeparisvb.blogspot.fr/2013/07/recherche-registre-en-vbnet.html
Le principe est rigoureusement le même.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015
28 mars 2015 à 12:39
Merci pour la réponse

Peu importe la durée, ça ne sera jamais aussi long que de le faire à la main avec regedit.
Par contre l'exemple proposé est en VB.net et je ne pense pas que l'on dispose en VB6 des fonctionnalités telles que RegistryKey ou RegistryHive.

Je pense que finalement je vais me contenter de sauvegarder le registre avec regedit, utiliser une moulinette en VB6 sur la sauvegarde pour faire les changements puis restaurer le registre à partir de la sauvegarde modifiée... Modifier un simple ficher texte ça je sais faire.

Bonne journée
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 28/03/2015 à 12:57
Oui ? Allons bon !
Vas-y donc, alors .

Quant au reste (la transposition) : si tu as compris le principe (celui de la lecture en boucle et en recursivité des noeuds, de leurs noeuds enfants, etc ...) , je ne vois pas ce qui te gêne dans la suppression, l'ajout et/ou le remplacement. Les exemples vb6 pour ce faire ne manquent pas, y compris sur ce forum !
La seule partie qui devrait t'intéresser est ce parcours en boucle en récursivité. Le reste, ma foi ...
Bonne chance.
0
Menerlach Messages postés 57 Date d'inscription dimanche 2 décembre 2012 Statut Membre Dernière intervention 1 juin 2015 > ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018
28 mars 2015 à 23:37
Finalement j'ai trouvé ce qui me manquait: RegEnumKeyEx et RegEnumValue, C'est facile de trouver de la doc sur ces fonctions api mais encore faut-il savoir qu'elle existent !

Merci
0
Rejoignez-nous