[R] Exploiter un array dans un string

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jerebou
Niveau 3
Niveau 3
Messages : 41
Enregistré le : mer. 07 déc. 2011 13:11
Status : Hors ligne

[R] Exploiter un array dans un string

#1

Message par jerebou »

Bonjour a tous,

Voila le scénario:

Je fournis le support pour un logiciel qui entre autres stocke certaines données dans le registre.
Pour chaque profil utilisateur lié a ce logiciel, existe un sous-dossier sous la forme

HKCU\Software\nomdusoft\profils\codeprofil-1
HKCU\Software\nomdusoft\profils\codeprofil-2
etc

Le nom de chaque profil est la seule variable que l'utilisateur connait et il se trouve a l’intérieur de chaque sous-dossier "codeprofil" stocké dans une clé dont le nom est connu.

Le but est de demander a l'utilisateur, pour chaque nom de profil, si ce profil est concerné par le problème rencontré, et le cas échéant en fonction de sa réponse, supprimer la sous-clé afin de résoudre le problème.

La difficulté vient du fait que je ne sais comment interroger le registre pour renvoyer la liste des sous-dossiers "codeprofil-n". J'ai bien pensé a _Filelisttoarray dans un premier temps, mais le triple problème est:

1- ceci donnera naissance a un tableau de valeurs que je ne sais quantifier, puisque je ne sais combien de "codeprofil" il existe
2- sauf erreur de ma part ce n'est pas exploitable dans le registre
3- même si j'arrive a extraire cette liste, je dois reconvertir chacun de ces arrays en string afin de pouvoir les insérer dans l'instruction finale qui consiste a supprimer la clé responsable du problème:

RegDelete($destinationdansleregistre, "clebidule")


Voila j’espère être suffisamment clair, merci pour vos réponses.
Modifié en dernier par jerebou le mar. 03 juil. 2012 15:15, modifié 1 fois.
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [...] Exploiter un array dans un string

#2

Message par sksbir »

bonjour

la commande que tu cherches est : RegEnumKey
jerebou
Niveau 3
Niveau 3
Messages : 41
Enregistré le : mer. 07 déc. 2011 13:11
Status : Hors ligne

Re: [...] Exploiter un array dans un string

#3

Message par jerebou »

Oui, mais...

Si je définis $chemin="HKCU\Software\nomdusoft\profils"
et demande a en tester 3 par exemple, je teste mon bout de code:

For $i=1 to 3
$codeprofil = RegEnumKey($chemin, $i)

Je n'ai rien du tout, je viens de tester avec une MsgBox.
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [...] Exploiter un array dans un string

#4

Message par PandiPanda »

Bonsoir,
et quel est l'erreur retournée par cette méthode ??

à savoir ces possibilité ci;
Failure: Returns an empty string and sets @error to:
1 if unable to open requested key
2 if unable to open requested main key
3 if unable to remote connect to the registry
-1 if unable to retrieve requested subkey (key instance out of range)
tester avec ceci par exemple ;
► Afficher le texte
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
jerebou
Niveau 3
Niveau 3
Messages : 41
Enregistré le : mer. 07 déc. 2011 13:11
Status : Hors ligne

Re: [R] Exploiter un array dans un string

#5

Message par jerebou »

Problème résolu, en fait vu d'ici ça parait idiot, mais SciTE ne veut pas utiliser une variable dans RegEnumKey pour indiquer le chemin a vérifier dans la base de registre si cette variable définit le début du chemin du genre HKEY_CURRENT_USER etc par contre je peux compléter mon chemin par un string rappelé dans l'expression, curieux quand même.

En fait il semble que pour initialiser ma fonction RegEnumKey je sois obligé de lui donner le chemin en dur, ou au moins le début.

J'ai fini par trouver la solution a mon script, je posterai le bon bout de code dans la journée.

Merci pour toutes les réponses.

EDIT: pas besoin de tout le bout de code, en fait les fonctions du registre ne reconnaissent le chemin que si son embranchement principal (HKEY_CURRENT_USER par exemple) a deja été utilisé au moins une fois en dur en invoquant une de ces fonctions. Ensuite, l'utilisateur peut librement rappeler l'instruction en question pour toute autre ligne de code en y mêlant diverses variables selon le besoin.

Vraiment curieux :shock:
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [R] Exploiter un array dans un string

#6

Message par TopXm »

Hello :)

J'utilise très régulièrement le registre (et je ne dois pas être le seul) et je ne vais pas dans ton sens

(ou alors j'ai pas capté ce que tu as dis)

Ceci par exemple fonctionne sans problème

Code : Tout sélectionner

Local $KeyTest = 'HKCU\Software\Microsoft\Windows'
Local $I = 0, $Res
While 1
    $I += 1
    $Res = RegEnumKey($KeyTest, $I)
    If @error Then ExitLoop
    ConsoleWrite('Clé lue : ' & $Res & @CRLF)
WEnd
jerebou
Niveau 3
Niveau 3
Messages : 41
Enregistré le : mer. 07 déc. 2011 13:11
Status : Hors ligne

Re: [R] Exploiter un array dans un string

#7

Message par jerebou »

Je précise donc, en bon débutant que je suis, que je n'avais pas défini ma variable comme étant d'un type en particulier, Local ou autre.
Une simple définition du chemin pour ma variable selon qu'il s'agit d'un OS 64 bits ou non, sans rien devant le $.
Répondre