Page 1 sur 1

[R] Lire une clé puis sa valeur

Posté : jeu. 26 déc. 2013 14:25
par Ks10
Bonjour à tous !

J'ai pour mission de lire une clé dans la base de registre puis sa valeur et son contenue et tous sa en listant dans une listview.

Exemple de ma base de registre :
HKEY_CURRENT_USER\Software\Skype

A l'intérieur il y a :
HKEY_CURRENT_USER\Software\Skype\utilisateur1
HKEY_CURRENT_USER\Software\Skype\utilisateur2
HKEY_CURRENT_USER\Software\Skype\utilisateur3
etc....

Dans :

HKEY_CURRENT_USER\Software\Skype\Utilisateur1, sa valeur est : mon.skype.test

J'aimerais lister ces deux informations dans un tableau :

Utilisateur | Son skype

Pour cela j'ai utiliser ce code :

Code : Tout sélectionner

For $i = 1 To 100

$test = Regenumval("HKEY_CURRENT_USER\Software\Skype", $i)
If @error <> 0 Then Exitloop
GuiCtrlCreateListViewItem($test, $list1)
Next
Ce code fonctionne mais me donne que les utilisateurs.

Si j'utilise ce code pour obtenir le reste :

Code : Tout sélectionner

For $i = 1 To 100

$test = Regenumval("HKEY_CURRENT_USER\Software\Skype", $i)
If @error <> 0 Then Exitloop

For $j = 1 To 100

   $test_suivant = Regenumval("HKEY_CURRENT_USER\Software\Skype" & $test, $j)
   If @error <> 0 Then Exitloop
   GuiCtrlCreateListViewItem($test & "|" & $test_suivant, $list1)
Next
 
Dans ce cas de figure plus rien ne s'affiche.
J'ai même essayer de faire deux boucles for différente c'est à dire aucun à l'intérieur de l'autre mais le résultat est pareil.

Mon raisonnement n'est pas bon ? Pourquoi ? Comment le corriger ?
Merci d'avance :)

Re: [..] Lire une clé puis sa valeur

Posté : jeu. 26 déc. 2013 16:01
par jguinch
Un truc comme ça ?
► Afficher le texte
Juste un truc bête : dans l'exemple de RegEnumVal, la boucle utilisée va de 1 à 100, c'est juste pour l'exemple.
Le mieux est de passer par un While 1 pour être sûr de lister toutes les valeurs (s'il y en a plus de 100 par ex).

Re: [..] Lire une clé puis sa valeur

Posté : ven. 27 déc. 2013 06:08
par Ks10
Merci, ton code est fonctionnel et oui c'est mieux une boucle while :)

j'apporte juste une petite correction parce que la il affiche une erreur par rapport à la syntaxe.

Code : Tout sélectionner

$i = 0
While 1
    $i += 1
    $value = Regenumval("HKEY_CURRENT_USER\Software\Skype", $i)
    If @error Then ExitLoop
   
    GuiCtrlCreateListViewItem($value & "|" & RegRead("HKEY_CURRENT_USER\Software\Skype\", $value), $list1 )
WEnd
Merci beaucoup :)