OVH Cloud OVH Cloud

9Inscription au Registre

6 réponses
Avatar
scraper
Bonjour à tous !

j'ai un souci avec des inscriptions de clés au Registre ....

disons que j'arrive à créer une sous clé, par exemple HK_CURRENT_USER\Toto

mais ensuite, lorsque je veux créer une entrée (Reg_SZ par exemple ) "Titi", et lui affecter la valeur chaine "Test" .. je bloque
...

malgré les exemples de AllAPI, j'y arrive pas !

Je pars de là (peut être n'est ce pas le bon départ ??)

-------------


RegCreateKeyEx HKEY_CURRENT_USER, "Toto", 0, "REG_SZ", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, ByVal 0&, Result, Ret

________

ensuite, j'essaie d'appliquer RegSetValueEx Ret mais sans succès ??

merci de m'apporter un peu d'aide sur ce problème basique ??

--

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

scraper

6 réponses

Avatar
François Picalausa
Bonjour/Soir,

RegCreateKeyEx HKEY_CURRENT_USER, "Toto", 0, "REG_SZ",
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, ByVal 0&, Result, Ret




Peut-être commencer par ne pas s'accorder tous les droits (KEY_ALL_ACCESS) ?
Pour créer la clé et changer la valeur, il te faut simplement
KEY_CREATE_SUB_KEY or KEY_SET_VALUE

Sinon, lpClass ne sert pas à définir le type de donnée. Tu devrais lui
passer vbNullString.

Tu peux passer le dernier paramètre en Byval 0& si tu n'as pas besoin de
savoir si la clé a été crée ou simplement ouverte (respectivement
REG_CREATED_NEW_KEY et REG_OPENED_EXISTING_KEY).

Tester la valeur retournée ne peut pas faire de mal non plus.

Donc, la ligne devrait être:

Dim hKey As Long

If RegCreateKeyEx(HKEY_CURRENT_USER, _
"Toto", 0, vbNullString, _
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, _
ByVal 0&, hKey, Byval 0&) <> 0 Then
Msgbox "La clé demandée n'a pu être ouverte/créée!"
Else
'Code
End If

ensuite, j'essaie d'appliquer RegSetValueEx Ret mais sans succès
??



Une fois que tu as un hKey valide (code plus haut):
Const REG_SZ = 1
Dim strData As String
strData = "Test" & vbNullChar

If RegSetValueEx(hKey, "Titi", 0, REG_SZ, strData, Len(strData)) = 0 Then
Msgbox "Valeur écrite avec succès!"
Else
MSgbox "Echec"
End If

--
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:

Je pars de là (peut être n'est ce pas le bon départ ??)

-------------


RegCreateKeyEx HKEY_CURRENT_USER, "Toto", 0, "REG_SZ",
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, ByVal 0&, Result, Ret

________

ensuite, j'essaie d'appliquer RegSetValueEx Ret mais sans succès
??


Avatar
scraper
Dans son message ,

François Picalausa nous a écrit/ répondu :

Dim hKey As Long

If RegCreateKeyEx(HKEY_CURRENT_USER, _
"Toto", 0, vbNullString, _
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, _
ByVal 0&, hKey, Byval 0&) <> 0 Then
Msgbox "La clé demandée n'a pu être ouverte/créée!"
Else
'Code
End If

Une fois que tu as un hKey valide (code plus haut):
Const REG_SZ = 1
Dim strData As String
strData = "Test" & vbNullChar

If RegSetValueEx(hKey, "Titi", 0, REG_SZ, strData, Len(strData)) = 0
Then Msgbox "Valeur écrite avec succès!"
Else
MSgbox "Echec"
End If




Re !

bon, j'ai fait comme tu as dit ci dessus ...

j'ai dû rater un truc, car j'arrive au même problème qu'avec la méthode que j'essayais d'employer ..

voila la valeur string prise par "Titi" : <[]

surprenant ??!

:-((

... je crois que je vais vraiment arrêter, là ....


--

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

scraper
Avatar
François Picalausa
Bonjour/soir,

"scraper" a écrit dans le message de
news:
j'ai dû rater un truc, car j'arrive au même problème qu'avec la
méthode que j'essayais d'employer ..

voila la valeur string prise par "Titi" : <[]



Peut-on jeter un oeil aux déclarations que tu utilise?
Il se peut qu'il faille passer l'un ou l'autre paramètre Byval ou que la
déclaration soit erronnée...

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
scraper
Dans son message e$,

François Picalausa nous a écrit/ répondu :


Bonjour/soir,

Peut-on jeter un oeil aux déclarations que tu utilise?
Il se peut qu'il faille passer l'un ou l'autre paramètre Byval ou que
la déclaration soit erronnée...



oui .... avec plaisir ! :-)


----

Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, _
ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, _
lpSecurityAttributes As Any, phkResult As Long, lpdwDisposition As Long) As Long

Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal _
dwType As Long, lpData As Any, ByVal cbData As Long) As Long

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Const HKEY_CURRENT_USER = &H80000001
Const REG_OPTION_NON_VOLATILE = 0
Const STANDARD_RIGHTS_ALL = &H1F0000
Const SYNCHRONIZE = &H100000
Const KEY_CREATE_LINK = &H20
Const KEY_CREATE_SUB_KEY = &H4
Const KEY_ENUMERATE_SUB_KEYS = &H8
Const KEY_NOTIFY = &H10
Const KEY_QUERY_VALUE = &H1
Const KEY_SET_VALUE = &H2
Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or _
KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or _
KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Const REG_SZ = 1


Private Sub Form_Load()

Dim hKey As Long, strData As String

strData = "Titi" & vbNullChar

If RegCreateKeyEx(HKEY_CURRENT_USER, "Toto", 0, vbNullString, _
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, _
ByVal 0&, hKey, ByVal 0&) <> 0 Then
MsgBox "La clé demandée n'a pu être ouverte/créée!"
Else
If RegSetValueEx(hKey, "Titi", 0, REG_SZ, strData, Len(strData)) = 0 Then
MsgBox "Valeur écrite avec succès!"
Else
MsgBox "Echec"
End If
RegCloseKey hKey
End If

Unload Form1

End Sub

voila ... en fait, c'est juste un test puisque j'arrive pas à affecter une valeur chaîne à mon entrée Titi ...

c'est pas la peine quej'aille plus loi, en l'état actuel des choses ....

sauf à écrire avec WSH ...

merci de ton aide


--

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

scraper
Avatar
François Picalausa
Bonjour/Soir,

"scraper" a écrit dans le message de
news:
Dans son message e$,

François Picalausa nous a écrit/ répondu :


Bonjour/soir,

Peut-on jeter un oeil aux déclarations que tu utilise?
Il se peut qu'il faille passer l'un ou l'autre paramètre Byval ou que
la déclaration soit erronnée...



oui .... avec plaisir ! :-)



Remplace
If RegSetValueEx(hKey, "Titi", 0, REG_SZ, strData,
Len(strData)) = 0 Then MsgBox


Par
If RegSetValueEx(hKey, "Titi", 0, REG_SZ, _
ByVal strData, Len(strData)) = 0 Then

La différence: un byval devant data
Sinon, la fonction reçoit un pointeur (l'adresse mémoire) où la chaine est
stoquée plutôt que la chaine

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
scraper
Dans son message ,

François Picalausa nous a écrit/ répondu :


Bonjour/Soir,

Remplace
If RegSetValueEx(hKey, "Titi", 0, REG_SZ, strData,
Len(strData)) = 0 Then MsgBox


Par
If RegSetValueEx(hKey, "Titi", 0, REG_SZ, _
ByVal strData, Len(strData)) = 0 Then



Re !

arfff !

j'suis trop con !!

hier, j'avais vu ça ... j'avais essayé, mais je me suis rendu compte aujourd'hui que j'avais oublié de déclarer des constantes (à
cause de Key_All_Access .... j'avais pas mis toutes les const .

et aujourd'hui, j'avais bien déclaré mes const, mais j'ai oublié ça !!

Pfff!

en tout cas, merci à toi, ça fonctionne nickel! :-)

(demain, j'attaque les binaires et/ou DWORD ... :-)

La différence: un byval devant data
Sinon, la fonction reçoit un pointeur (l'adresse mémoire) où la
chaine est stoquée plutôt que la chaine



OK ... donc, si j'ai bien compris ça ne s'applique qu'aux REG_SZ ...

merci et bonne nuit à tous ! ;-)

--

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

scraper