OVH Cloud OVH Cloud

API Registre

2 réponses
Avatar
Jacques
Bonjour,
je viens de me lancer pour la première fois dans les API d'accès au
Registre. Jusqu'à maintenant, je n'ai eu aucun problème pour lire et
écrire des clés. Mais voilà que la fonction RegEnumKeyEx me cause
quelques ennuis... J'utilise le morceau de code suivant pour parcourir
une clé de mon application :

Dim Resp, Index, i, lngBuff As Long
Dim strSubKeyFound, strBuff As String
Dim lngType As FILETIME
i = 0&
strSubKeyFound = Space(255)
strBuff = Space(255)
lngBuff = Len(strSubKeyFound)
lngType.dwHighDateTime = Len(strSubKeyFound)
lngType.dwLowDateTime = Len(strSubKeyFound)
Resp = Len(strSubKeyFound)
'
RegOpenKeyEx HKEY_CURRENT_USER, "SOFTWARE\GestImmo\Users",0,
KEY_ALL_ACCESS, Resp Do While Index <> ERROR_NO_MORE_ITEMS
Index = RegEnumKeyEx(ByVal Resp, ByVal i, ByVal strSubKeyFound,
lngBuff, 0, vbNullString, _
0, lngType)
If Index <> ERROR_SUCCESS Or strSubKeyFound = Space(255)
Then Exit Do
If Index = ERROR_SUCCESS And strSubKeyFound
<> Space(255) Then
'
' Mon code
'
End If
Loop

Le problème, c'est que normalement, la variable strSubKeyFound devrait
contenir le nom de la sous-clé trouvée. Or, elle est toujours vide...
Comment cela est-il possible ?...

Merci de votre aide

Jacques

2 réponses

Avatar
François Picalausa
Bonjour/soir,

si ce n'est pas nécessaire, évite le KEY_ALL_ACCESS. Le droit requis pour
cette opération est : KEY_ENUMERATE_SUB_KEYS
Je ne vois pas non plus d'incrémentation de i.
La fiche suivante de la KB montre comment faire:
http://support.microsoft.com/default.aspx?scid&7908

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


"Jacques" a écrit dans le message de
news:%dOib.5532$
Bonjour,
je viens de me lancer pour la première fois dans les API d'accès au
Registre. Jusqu'à maintenant, je n'ai eu aucun problème pour lire et
écrire des clés. Mais voilà que la fonction RegEnumKeyEx me cause
quelques ennuis... J'utilise le morceau de code suivant pour parcourir
une clé de mon application :

Dim Resp, Index, i, lngBuff As Long
Dim strSubKeyFound, strBuff As String
Dim lngType As FILETIME
i = 0&
strSubKeyFound = Space(255)
strBuff = Space(255)
lngBuff = Len(strSubKeyFound)
lngType.dwHighDateTime = Len(strSubKeyFound)
lngType.dwLowDateTime = Len(strSubKeyFound)
Resp = Len(strSubKeyFound)
'
RegOpenKeyEx HKEY_CURRENT_USER, "SOFTWAREGestImmoUsers",0,
KEY_ALL_ACCESS, Resp Do While Index <> ERROR_NO_MORE_ITEMS
Index = RegEnumKeyEx(ByVal Resp, ByVal i, ByVal strSubKeyFound,
lngBuff, 0, vbNullString, _
0, lngType)
If Index <> ERROR_SUCCESS Or strSubKeyFound > Space(255) Then Exit Do
If Index = ERROR_SUCCESS And strSubKeyFound
<> Space(255) Then
'
' Mon code
'
End If
Loop

Le problème, c'est que normalement, la variable strSubKeyFound devrait
contenir le nom de la sous-clé trouvée. Or, elle est toujours vide...
Comment cela est-il possible ?...

Merci de votre aide

Jacques


Avatar
Jacques
OK. Merci pour ces précisions.
A +,
Jacques




Bonjour/soir,

si ce n'est pas nécessaire, évite le KEY_ALL_ACCESS. Le droit requis pour
cette opération est : KEY_ENUMERATE_SUB_KEYS
Je ne vois pas non plus d'incrémentation de i.
La fiche suivante de la KB montre comment faire:
http://support.microsoft.com/default.aspx?scid&7908