Bonjour,
Ceci est mon premier tutoriel et je vais tenter de vous expliquer comment fonctionne les registres avec AutoIt.
Premièrement, il faut savoir ce qu'est un registre. Allez dans Exécuter -> regedit.exe. Chaque élément du registre est nommé un Clé Registre.
Je vais vous expliquer comment lire une clé. Comme exemple, je vais prendre Dofus, car je crois que la plupart des membres ici y joue. Nous essayerons d'afficher votre version du client Dofus dans une boite de dialogue
Commençons par trouver le chemin de la clé. Celle désirée se trouve dans HKEY_LOCAL_MACHINE -> SOFTWARE -> Ankama -> Dofus. Cliquez sur ce fichier. Plusieurs lignes s'affichent, chacune étant une clé différente. Notez le chemin de cette façon: HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus et ensuite notez le nom de la clé désirée (ici "Version").
Maintenant, passons à la partie AutoIt. La fonction pour lire une clé est:
RegRead( "keyname", "valuename" )
En la remplissant correctement nous obtenons:
RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus","Version")
Il suffit de mettre le tout dans une variable, et de l'afficher! Code fonctionnel:
$VersionDofus = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Ankama\Dofus","Version")
MsgBox(4096,"...",$versionDofus)
Maintenant passons à l'ajout de clés. Le prototype est plus complexe que le précédent, mais nous allons nous en sortir ^-^
RegWrite( "keyname" [,"valuename", "type", value] )
Nous retrouvons encore les deux premières valeurs, mais deux sont nouvelles: type et value.
- Type est le type d'écriture que vous voulez faire sur cette clé.
Voici une liste des types disponibles:
Zebulon.fr a dit : "REG_BINARY - Ce type contient la valeur sous forme d'une ligne de donnée binaire. La plupart des informations concernant les composants matériels sont stockées sous forme d'une donnée binaire, et peuvent être affichées à l'aide d'un éditeur de format hexadécimal.
REG_DWORD - Ce type représente les données par un nombre de quatre octets et est couramment utilisé pour les valeurs booléennes, comme "0" pour désactivé et "1" pour activé ou inversement (c'est en fonction du nom de la valeur). De plus, beaucoup de paramètres de pilotes de périphériques et de services sont de ce type et peuvent être affichés avec REGEDT32 au format binaire, hexadécimal et décimal, ou avec REGEDIT au format hexadécimal et décimal.
REG_EXPAND_SZ - Ce type est une chaîne de données extensible dont la chaîne contient une variable qui sera remplacée quand elle est appelée par une application. Par exemple, pour la valeur suivante, la chaîne "%SystemRoot%" sera remplacée par l'emplacement actuel du répertoire qui contient les fichiers système de Windows.
REG_MULTI_SZ - Ce type est une chaîne multiple, il est utilisé pour représenter les valeurs qui contiennent des valeurs de liste ou multiples, chaque entrée étant séparée par un caractère NULL.
REG_SZ - Ce type est une chaîne standard, utilisé pour représenter des valeurs de texte contrôlables."
- Value est la valeur à entrer dans la clé.
Comme exemple, disons que l'utilisateur entre son age dans une variable, et que vous ne voulez pas lui redemander à la prochaine ouverture du programme. Vous pouvez très bien passer par un INI, mais les registres sont aussi faits pour ça.
RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\MonProgramme","Age","REG_SZ",$age)
Attention, ce code risque de ne pas fonctionner partout!!
Préférez mettre cette ligne au début du code, pour être sure d'avoir accès au registre:
#RequireAdmin
Et si l'utilisateur ne veut plus que vous enregistiez son age dans ses registres??
Hé bien la fonction RegDelete est là pour vous. Voici son prototype, semblable à celui de lecture:
RegDelete( "keyname" [, "valuename"] )
Indiquez "valuename" si vous voulez supprimer une clé précisément, ne l'indiquez pas pour supprimer le dossier avec tout ce qu'il contient. Voici un exemple avec l'age seulement:
RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\MonProgramme","Age")
Attention, ce code risque de ne pas fonctionner partout!!
Préférez mettre cette ligne au début du code, pour être sure d'avoir accès au registre:
#RequireAdmin
Autre chose, si vous voulez REMPLACER une valeur par une autre. Il faut faire un RegDelete et ensuite un RegWrite. On ne peut pas écrire par-dessus une clé déjà existante.
Passons à RegEnumKey. Cette fonction un peut spéciale permet d'afficher un dossier grâce à son ID. Dans le registre, elle commence à 1. Prototype:
RegEnumKey( "keyname", instance )
Affichons le premier dossier qui se trouve dans SOFTWARE grâce à ce code:
$dossier = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE", 1)
MsgBox(4096, "Premier dossier de la liste!", $dossier)
Il existe aussi une fonction semblable, permettant d'afficher une clé. Ces dernières sont classées par ordre de création, et non par ordre alphabétique. Allez, découvront la première clé qu'à crée AutoIt sur votre machine. La prototype est assez simple:
RegEnumVal( "keyname", instance )
Je vous avais bien dit qu'il était semblable...
$cle = RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\AutoIt v3\Autoit", 1)
MsgBox(4096, "Première clé crée par AutoIt!", $cle)
Enjoy!
Par : Derou.