Bonjour,
Je suis en train d'écrire un programme qui change une clé dans la base de registre. Il a fonctionné durant mes tests pendant un jour et demi sans aucun souci, mais maintenant que j'en suis vers l'étape finale, il ne respecte plus l'adresse que je lui demande.
Ce code permet d'intervertir 2 licences (achetées et légales, je précise) pour le programme Solidworks (une qui est utilisée en locale et une qui donne accès à un gestionnaire de licences sur le réseau pour utiliser des modules avancés).
Je me retrouve donc avec un problème lors de l'écriture dans la base de registre.
Pour une raison que je ne détermine pas, les clés ne sont pas écrites dans les adresses des variables $Cle1, $Cle2 ou $Cle3, mais dans l'adresse suivante : HKEY_LOCAL_MACHINE\SOFTWARE\
Wow6432Node\SolidWorks\...
Comment résoudre ce problème ?
Voici un extrait de mon code (les parties qui contiennent [...] sont fonctionnelles et je ne les ai pas incluses ici) :
► Afficher le texte
Code : Tout sélectionner
Dim $Cle1, $Cle2, $Cle3 [..]
Local $Cle1="HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\Licenses\Serial Numbers"
Local $Cle2="HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\Security"
Local $Cle3="HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\Security"
[...]
If $choix=6 then
MsgBox (64, "Fermer Solidworks", "Veuillez fermer Solidworks pour le changement de licence")
If ($licence="locale") then
RegWrite ($Cle1, "Solidworks", "REG_SZ", $flottante)
RegWrite ($Cle2, "Serial Number", "REG_SZ", $flottante1)
RegWrite ($Cle3, "Serial Number Extra", "REG_SZ", $flottante2)
MsgBox (64, "Licence chang"&$e&"e", "Votre licence a "&$e&"t"&$e&" pass"&$e&"e en flottante")
ElseIf ($licence="flottante") then
RegWrite ($Cle1, "Solidworks", "REG_SZ", $locale)
RegWrite ($Cle2, "Serial Number", "REG_SZ", $locale1)
RegWrite ($Cle3, "Serial Number Extra", "REG_SZ", $locale2)
MsgBox (64, "Licence chang"&$e&"e", "Votre licence a "&$e&"t"&$e&" pass"&$e&"e en locale")
Else
MsgBox (64, "Erreur", "Erreur dans le programme")
Exit
EndIf
ElseIf ($choix=7) then
MsgBox (64, "Licence non chang"&$e&"e", "Votre licence n"&$x&"a pas "&$e&"t"&$e&" chang"&$e&"e")
Else
MsgBox (64, "Erreur", "Erreur dans le programme")
Exit
EndIf
Autre chose, je n'ai pas totalement saisi comment inclure dans le code une identification auto en admin avec mot de passe stocké dans le code (la raison qui m'a conduit à changer mon code VBS en code autoit). Si quelqu'un pouvait m'y apporter son éclairage, je lui en serais gré.
Et enfin dernière chose, j'ai 3 variables déclarées pour les caractères spéciaux dans les msgbox (voir code ci-dessous), mais ce que je ne comprend pas, c'est que lorsque dans le logiciel d'écriture, je fais "Go" pour lancer le code et le tester, il me met ces trois caractères spéciaux à l'emplacement de mon curseur de texte ... ça rend fou !!
Code : Tout sélectionner
Local $e="é"
Send ($e)
Local $a="à"
Send ($a)
Local $x="'"
Send ($x)
Merci d'avance
