OVH Cloud OVH Cloud

valeur binaire

4 réponses
Avatar
scraper
bonsoir à tous !

je cherche à créer une entrée dans le Registre, en valeur binaire ... jusque là, tout va bien, avec RegSetValueEx !

mais là où ça va plus, c'est qu'il faut absolument que sa valeur soit 02 00 00 00 ....

qu'est ce que je dois mettre comme valeur de strdata, pour arriver à afficher ce résultat dans le Registre ???

merci d'avance !


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper

4 réponses

Avatar
Jean-Marc
"scraper" a écrit dans le message de
news:
bonsoir à tous !

je cherche à créer une entrée dans le Registre, en valeur binaire ...


jusque là, tout va bien, avec RegSetValueEx !>
mais là où ça va plus, c'est qu'il faut absolument que sa valeur soit 02


00 00 00 ....

Hmm... 02 00 00 00 en Binaire ?

Ca confirme l'adage bien connu:
"Il y a seulement 10 sortes de gens: ceux qui comprennent le binaire et ceux
qui ne le comprennent pas."

:-) Jean_marc
Avatar
François Picalausa
Bonjour/soir,

Essaye ceci:
lngRoot, strKeyPath et strValueName
correspondent respectivement à
-la clé primaire (HK_ROOT, HK_CU, HK_LM, ..)
-le chemin sous cette clé (par exemple: "software")
-le nom de la valeur

Dans la déclaration de RegSetValueEx, le 5ème paramètre doit être "As
Any"

Dim hKey As Long, BytesTbl(3) As Byte

If Inited Then
'02 00 00 00
BytesTbl(0) = 2
BytesTbl(1) = 0
BytesTbl(2) = 0
BytesTbl(3) = 0

If RegOpenKeyEx(lngRoot, _
strKeyPath & vbNullChar, 0, _
KEY_SET_VALUE, hKey) = ERROR_SUCCESS Then
'Si l'ouverture de la clé a réussi

'on écrit la valeur appropriée
'a noter qu'on passe le premier byte et pas le tableau
'(en fait, un pointeur vers le premier)
'4 est la longueur
'Note que pour 4, on peut le coder sur un DWORD
RegSetValueEx hKey, strValueName, 0, REG_BINARY, BytesTbl(0), 4
RegCloseKey hKey
End If
End If

On pourrait aussi le faire à partir d'une chaine contenant:
Chr(2) & string$(3, vbnullchar)
(ce qui est égal à un caractère 2 suivit de trois caractères 0)
Dans ce cas, si le 5ème paramètre de RegSetValueEx est As Any, il faudrait
passer la chaine comme ceci:
Dim strValue As String
strValue = Chr(2) & string$(3, vbnullchar)

RegSetValueEx hKey, strValueName, 0, REG_BINARY, ByVal strValue, 4

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"scraper" a écrit dans le message de
news:
bonsoir à tous !

je cherche à créer une entrée dans le Registre, en valeur binaire ...
jusque là, tout va bien, avec RegSetValueEx !

mais là où ça va plus, c'est qu'il faut absolument que sa valeur soit
02 00 00 00 ....

qu'est ce que je dois mettre comme valeur de strdata, pour arriver à
afficher ce résultat dans le Registre ???

merci d'avance !


Avatar
François Picalausa
Bonjour/soir,

et pourtant dans l'éditeur du registre, les valeurs enregistrées en tant que
REG_BINARY sont affichées en tant qu'hexadécimale et on ne peut enregistrer
les valeurs que par octets.
Quand a savoir si les gens qui ont pensé l'éditeur de registre faisaient
partie du type 1 ou 10... ?

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Jean-Marc" a écrit dans le message de
news:401d72d6$0$309$
"scraper" a écrit dans le message de
news:
bonsoir à tous !

je cherche à créer une entrée dans le Registre, en valeur binaire ...


jusque là, tout va bien, avec RegSetValueEx !>
mais là où ça va plus, c'est qu'il faut absolument que sa valeur
soit 02 00 00 00 ....



Hmm... 02 00 00 00 en Binaire ?

Ca confirme l'adage bien connu:
"Il y a seulement 10 sortes de gens: ceux qui comprennent le binaire
et ceux qui ne le comprennent pas."

:-) Jean_marc


Avatar
scraper
Salut à François Picalausa, qui nous a nous a écrit/ répondu

dans son message :


Bonjour/soir,



:-)


Essaye ceci:
lngRoot, strKeyPath et strValueName
correspondent respectivement à
-la clé primaire (HK_ROOT, HK_CU, HK_LM, ..)
-le chemin sous cette clé (par exemple: "software")
-le nom de la valeur

Dans la déclaration de RegSetValueEx, le 5ème paramètre doit être
"As Any"

Dim hKey As Long, BytesTbl(3) As Byte

If Inited Then
'02 00 00 00
BytesTbl(0) = 2
BytesTbl(1) = 0
BytesTbl(2) = 0
BytesTbl(3) = 0

If RegOpenKeyEx(lngRoot, _
strKeyPath & vbNullChar, 0, _
KEY_SET_VALUE, hKey) = ERROR_SUCCESS Then
'Si l'ouverture de la clé a réussi

'on écrit la valeur appropriée
'a noter qu'on passe le premier byte et pas le tableau
'(en fait, un pointeur vers le premier)
'4 est la longueur
'Note que pour 4, on peut le coder sur un DWORD
RegSetValueEx hKey, strValueName, 0, REG_BINARY,
BytesTbl(0), 4 RegCloseKey hKey
End If
End If



oui ... j'ai tout bien fait comme ça, et en retour,je reçois une erreur sur BytesTbl(0) (type incompatible, si je me souviens ?)



On pourrait aussi le faire à partir d'une chaine contenant:
Chr(2) & string$(3, vbnullchar)
(ce qui est égal à un caractère 2 suivit de trois caractères 0)
Dans ce cas, si le 5ème paramètre de RegSetValueEx est As Any, il
faudrait passer la chaine comme ceci:
Dim strValue As String
strValue = Chr(2) & string$(3, vbnullchar)

RegSetValueEx hKey, strValueName, 0, REG_BINARY, ByVal strValue, 4




là, ça le fait beaucoup mieux !!

c'est le top ....j'ai rien eu à modifier à ma fonction ! :-)

c'est la valeur que je savais pas passer (et aussi le as any pour être franc ! ;-)

merci beaucoup ....

à demain pour d'autres questions ... lol


--

Attention ! Adresse mail invalide ...
Pour me contacter, cliquez sur le lien ci-dessous:
http://scraper.chez.tiscali.fr/contact.htm

scraper