VB6 Base de Registre Hexadecimal

madustbin Messages postés 29 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 20 novembre 2016 - 2 avril 2005 à 20:23
cs_Banzai Messages postés 17 Date d'inscription lundi 12 août 2002 Statut Membre Dernière intervention 16 février 2011 - 21 avril 2005 à 15:25
Bonjour.


Lorsque j'utilise l'instruction :
Shell.RegWrite
VB6 m'affiche une info Bulle contenant :
RegWrite(Name As String, Value, [Type])


Je souhaiterais ecrire une cle dans la Base De Regsitre que je possede dans un fichier .reg.
L'info etant de l'hexadecimal, elle devrait etre ecrite avec le type REG_BINARY je pense.
Mais je n'y arrive pas.


J'ai meme essaye de lire la cle existante et de la reecrire.
Mais s'il accepte le type Variant pour la lecture, il refuse que j'ecrive avec.


Je pourrais faire un shell.Run du fichier, mais il m'affiche 2 fois une msgbox ou il faut cliquer sur OK.
Et ca, ca n'est pas super.


Si quelqu'un pouvait m'aider...


Merci.


PS : voici l'apercu de mon fichier .reg
[HKEY_USERS\xxxx\Software\xxx\xxx]
"ABCD"=hex:FB,20,87

10 réponses

enernet Messages postés 6 Date d'inscription samedi 29 novembre 2003 Statut Membre Dernière intervention 2 avril 2005
2 avril 2005 à 21:44
Essaie plutot ceci :

dim taValeur
dim winshell
set winshell = createobject("wscript.shell")

tavaleur = hex(tavaleur)

winshell.regwrite "HKEY_USERS\xxxx\Software\xxx\xxx", TaValeur, "REG_SZ"

ps reg_sz car si tu mets reg binary, tu ne peux y mettre du hexa

Dave C. Laramee ;)
0
madustbin Messages postés 29 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 20 novembre 2016
3 avril 2005 à 03:45
Merci de ta reponse.

Helas cela ne fonctionne pas....avec moi je precise. :)

j'ai mis un apercu du fichier et lorsque je mets cette valeur dans la ligne :
taValeur = hex("FB,20,87")

j'ai une erreur d'incompatibilite.

de plus, en mettant RG_SZ, je cree une cle en caracteres.
Moi je souhaite qu'elle soit en REG_BINARY.

J'ai cette cle dans ma base de registre.

J'arrive a la lire avec le type variant mais je ne peux plus rien en faire.
Et je voudrais la copier dans une autre cle avec VB bien sur.

A+
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
3 avril 2005 à 11:45
Si ta clé est "ABCD", essaie ça :
regwrite "HKEY_USERS\xxxx\Software\xxx\xxx", "ABCD", "REG_BINARY", "FB2087"

Loup Gris
0
madustbin Messages postés 29 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 20 novembre 2016
5 avril 2005 à 01:26
Comme il semble difficile de retrouver ses anciens messages avec la recherche, je fais remonter celui-ci.





En esperant qua quelqu'un puisse serieusement m'aider.





Sinon, ceci sera mon dernier post sur ce forum.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
5 avril 2005 à 22:20
Je ne comprend pas ton ressentiment. Il est pourtant facile de "retrouver ses anciens messages". Visiblement la recherche n'est pas ton fort car, tu tapais "regwrite vb" dans google et tu aurais eu plein de pages où tu aurais trouvé ton bonheur.

Dans mon dernier post, j'ai fais une tite erreur, je le reconnais mais je ne me sers pas de ("wscript.shell") et j'ai un peu confondu avec d'autres méthodes. Mais si tu regardes bien le post de Enernet, il y a la solution. Le seul truc c'est qu'il faut l'écrire de cette manière, enfin d'après ce que tu aurais pu trouver avec google :

winshell.regwrite "HKEY_USERS\xxxx\Software\xxx\xxx", "FB2087", "REG_BINARY"

A toi de savoir ce qu'il a à la place de tes xxxx.

"FB2087" étant la valeur que tu as dis vouloir inscrire. Pas de virgule, pas de hex()...

Si cette dernière réponse ne te convient pas et surtout si tu ne nous prend que pour des distributeurs automatiques de solutions, tu peux effectivement oublier ce forum. On ne te regrettera pas.

Loup Gris
0
cs_Banzai Messages postés 17 Date d'inscription lundi 12 août 2002 Statut Membre Dernière intervention 16 février 2011
18 avril 2005 à 16:38
Je suis aussi en train de lutter avec REG_BINARY :)

Le pb est que le type REG_BINARY ne prend que de l'integer. Et le pb qui se pose c'est que si l'on veut une valeur 12 00 00 00 dans le registre, je n'arrive pas a trouver la bonne valeur integer à saisir dans le script VBS qui me donnera 12 00 00 00 dans le registre.

Si quelqu'un peut me donner le secret de la convertion hex --> bin de la base de registre ...

Merci d'avance
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
18 avril 2005 à 20:19
Alors, même si tu as une valeur binary dans ta registry, essaies :

winshell.regwrite "HKEY_USERS\xxxx\Software\xxx\xxx",
&H12000000, "REG_DWORD"

C'est peut-être pas très élégant mais ça marche, j'ai testé.

Loup Gris
0
cs_Banzai Messages postés 17 Date d'inscription lundi 12 août 2002 Statut Membre Dernière intervention 16 février 2011
19 avril 2005 à 09:26
Oui c vrai que ça a l'air de fonctionner .... sont quand meme bizarre chez microsoft :)

c'est pas très propre mais bon au moins ça fonctionne en attendant de trouver la convertion binaire ... merci pour ton conseil ...
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
19 avril 2005 à 19:56
Une autre solution :

En fait, tu peux passer du long et de l'hexa avec reg_binary (après tout, un long ou un hexa est converti en binaire en mémoire) mais pas du string (ce que te renverrai un hex()).
Le problème, avec reg_binary, c'est les octets de poids forts et faibles.
Si tu veux obtenir "01 02 03 04" dans ta valeur binary de ta registry, il faut inverser tous les octets de "01 02 03 04" que tu peux passer comme ça si c'est toi qui dit que ... :

winshell.regwrite "HKEY_USERS\xxxx\Software\xxx\xxx", &H04030201, "REG_BINARY"

ou comme ça si tu récupères la valeur à mettre d'un fichier ou autrement :

Dim TaValeur As String


'Tu récupères une string
TaValeur = "01 02 03 04"

Là, tu te débrouilles pour inverser et obtenir "&H04030201" dans TaValeur, par ex :

Dim TaValeur As String
Dim TaValeurInverse As String
Dim i As Integer
Dim winshell
Set winshell = CreateObject("wscript.shell")


TaValeur = "01 02 03 04"
TaValeurInverse = "&H"


For i = Len(TaValeur) - 1 To 1 Step -3
TaValeurInverse = TaValeurInverse & Mid$(TaValeur, i, 2)
Next


'ou, si TaValeur = "01020304"
'For i = Len(TaValeur) - 1 To 1 Step -2
' TaValeurInverse = TaValeurInverse & Mid$(TaValeur, i, 2)
'Next


winshell.regwrite "HKEY_USERS\xxxx\Software\xxx\xxx", CLng(TaValeurInverse), "REG_BINARY"

Mais il faut que tu sois sùr que TaValeur puisse être convertie en long (en vb6). "Converted to.... integer" de la msdn doit plutôt correspondre à int32 de vb.net.
L'exemple que je te donnes est en vb6 donc à adapter pour vb.net.

Loup Gris
0
cs_Banzai Messages postés 17 Date d'inscription lundi 12 août 2002 Statut Membre Dernière intervention 16 février 2011
21 avril 2005 à 15:25
Niquel c exactement l'info que je cherchais ...

Merci beaucoup pour ton aide Loup Gris
0
Rejoignez-nous