Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lecture de base de registre

1 réponse
Avatar
Didier
Slt

J'ai besoin d'obtenir une valeur contenu dans Default Mail=20
Account
dans la=20
cl=E9 :HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\OM
I Account Manager
dans le registre.

J utilise :
CompteMessagerie$ =3D GetKeyValue
(HKEY_CURRENT_USER, "Software\Microsoft\Office\Outlook\OMI=20
Account Manager\Default Mail Account", "")
Mais voila je n'arrive pas a obtenir 00000001 contenu dans=20
Default Mail Account.
Pourquoi ?


dans le module j'ai :
***********************************************************
***********
***********************************************************
***********
' Ce module lit et =E9crit les cl=E9s de la base de registres.=20
Contrairement
' aux m=E9thodes d'acc=E8s =E0 la base de regitres interne de=20
VB, il peut lire
' et =E9crire toute les cl=E9s du registre avec des valeurs de=20
type cha=EEne.

'Option Explicit
'----------------------------------------------------------
-----
'- D=E9clarations des API de base de registres...
'----------------------------------------------------------
-----
Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As=20
Long) As Long
Declare Function RegCreateKeyEx Lib "advapi32"=20
Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal=20
lpSubKey As String, ByVal reserved As Long, ByVal lpClass=20
As String, ByVal dwOptions As Long, ByVal samDesired As=20
Long, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES,=20
ByRef phkResult As Long, ByRef lpdwDisposition As Long) As=20
Long
Declare Function RegOpenKeyEx Lib "advapi32"=20
Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey=20
As String, ByVal ulOptions As Long, ByVal samDesired As=20
Long, ByRef phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32"=20
Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal=20
lpValueName As String, ByVal lpReserved As Long, ByRef=20
lpType As Long, ByVal lpData As String, ByRef lpcbData As=20
Long) As Long
Declare Function RegSetValueEx Lib "advapi32"=20
Alias "RegSetValueExA" (ByVal hKey As Long, ByVal=20
lpValueName As String, ByVal reserved As Long, ByVal=20
dwType As Long, ByVal lpData As String, ByVal cbData As=20
Long) As Long
'
'----------------------------------------------------------
-----
'- Constantes des API de base de registres...
'----------------------------------------------------------
-----
' Types de donn=E9es de base de registres...
Global Const REG_SZ =3D 1 '=20
cha=EEne Unicode termin=E9e par nul
Global Const REG_EXPAND_SZ =3D 2 '=20
cha=EEne Unicode termin=E9e par nul
Global Const REG_DWORD =3D 4 '=20
nombre 32-bit
' Valeurs de type de cr=E9ation...
Global Const REG_OPTION_NON_VOLATILE =3D 0 '=20
cl=E9 pr=E9serv=E9e lorsque le syst=E8me
' est=20
red=E9marr=E9

' Options de s=E9curit=E9 de cl=E9 de base de registres...
Global Const READ_CONTROL =3D &H20000
Global Const KEY_QUERY_VALUE =3D &H1
Global Const KEY_SET_VALUE =3D &H2
Global Const KEY_CREATE_SUB_KEY =3D &H4
Global Const KEY_ENUMERATE_SUB_KEYS =3D &H8
Global Const KEY_NOTIFY =3D &H10
Global Const KEY_CREATE_LINK =3D &H20
Global Const KEY_READ =3D KEY_QUERY_VALUE +=20
KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + READ_CONTROL
Global Const KEY_WRITE =3D KEY_SET_VALUE +=20
KEY_CREATE_SUB_KEY + READ_CONTROL
Global Const KEY_EXECUTE =3D KEY_READ
Global Const KEY_ALL_ACCESS =3D KEY_QUERY_VALUE +=20
KEY_SET_VALUE + KEY_CREATE_SUB_KEY +=20
KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + KEY_CREATE_LINK +=20
READ_CONTROL
=20
' Types de cl=E9 Racine de la base de registres...
Global Const HKEY_CLASSES_ROOT =3D &H80000000
Global Const HKEY_CURRENT_USER =3D &H80000001
Global Const HKEY_LOCAL_MACHINE =3D &H80000002
Global Const HKEY_USERS =3D &H80000003
Global Const HKEY_PERFORMANCE_DATA =3D &H80000004

' Valeur renvoy=E9e...
Global Const ERROR_NONE =3D 0
Global Const ERROR_BADKEY =3D 2
Global Const ERROR_ACCESS_DENIED =3D 8
Global Const ERROR_SUCCESS =3D 0

'----------------------------------------------------------
-----
'- Type Security_Attributes de la base de registres...
'----------------------------------------------------------
-----
Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End Type


'----------------------------------------------------------
---------------------
'Exemple d'utilisation - Debug.Print GetKeyValue
(HKEY_CLASSES_ROOT, "COMCTL.ListviewCtrl.1\CLSID", "")
'----------------------------------------------------------
---------------------
Function GetKeyValue(KeyRoot As Long, KeyName As String,=20
SubKeyRef As String) As String
Dim i As Long ' Compteur de boucle
Dim rc As Long ' Code renvoy=E9
Dim hKey As Long ' Descripteur de cl=E9=20
de base de registres ouverte
Dim hDepth As=20
Long '
Dim sKeyVal As String
Dim lKeyValType As Long ' Type de donn=E9es=20
d'une cl=E9 de base de registres
Dim tmpVal As String ' Stockage temporaire=20
d'une valeur de cl=E9 de base de registres
Dim KeyValSize As Long ' Taille d'une=20
variable cl=E9 de base de registres
=20
=20
' Ouvre RegKey sous KeyRoot {HKEY_LOCAL_MACHINE...}
'------------------------------------------------------
------
rc =3D RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS,=20
hKey) ' Ouvre la cl=E9 de base de registres
=20
If (rc <> ERROR_SUCCESS) Then GoTo=20
GetKeyError ' Gestion des erreurs
=20
tmpVal =3D String$(1024,=20
0) ' Alloue de l'espace=20
pour la variable
KeyValSize =3D=20
1024 ' D=E9finit=20
la taille de la variable
=20
'------------------------------------------------------
------
' R=E9cup=E8re une valeur de cl=E9 de base de registres...
'------------------------------------------------------
------
rc =3D RegQueryValueEx(hKey, SubKeyRef, 0, _
lKeyValType, tmpVal,=20
KeyValSize) ' Lit/Cr=E9e une valeur de cl=E9
=20
If (rc <> ERROR_SUCCESS) Then GoTo=20
GetKeyError ' Gestion des erreurs
=20
tmpVal =3D Left$(tmpVal, InStr(tmpVal, Chr(0)) - 1)

'------------------------------------------------------
------
' D=E9termine le type de valeur de cl=E9 pour la=20
conversion...
'------------------------------------------------------
------
Select Case=20
lKeyValType '=20
Recherche des types de donn=E9es...
Case REG_SZ,=20
REG_EXPAND_SZ ' Type de=20
donn=E9es String de cl=E9 de base de registres
sKeyVal =3D=20
tmpVal ' Copie la=20
valeur String
Case=20
REG_DWORD '=20
Type de donn=E9es Double Word de cl=E9 de base de registres
For i =3D Len(tmpVal) To 1 Step -
1 ' Convertit chaque bit
sKeyVal =3D sKeyVal + Hex(Asc(Mid(tmpVal, i,=20
1))) ' G=E9n=E8re la valeur car. par car.
Next
sKeyVal =3D Format$("&h" +=20
sKeyVal) ' Convertit le type Double=20
Word en String
End Select
=20
GetKeyValue =3D=20
sKeyVal ' Valeur=20
renvoy=E9e
rc =3D RegCloseKey
(hKey) ' Ferme la cl=E9=20
de base de registres
Exit=20
Function '=20
Quitte
=20
GetKeyError: =20
' Nettoyage apr=E8s apparition d'une erreur...
GetKeyValue =3D=20
vbNullString ' Affecte=20
une cha=EEne vide =E0 la valeur renvoy=E9e
rc =3D RegCloseKey
(hKey) ' Ferme la cl=E9=20
de base de registres
End Function
***********************************************************
***********
***********************************************************
***********
Nom de la=20
cl=E9 :HKEY_CURRENT_USER\Software\Microsoft\Office\Outlook\OM
I Account Manager
Nom de la classe : <Sans classe>
Heure de derni=E8re =E9criture : 11/02/2004 - 16:01
Valeur 0
Nom : Account Name
Type : REG_DWORD
Donn=E9es : 0x5
=20
Valeur 1
Nom : Default Mail Account
Type : REG_SZ
Donn=E9es : 00000001
=20
Valeur 2
Nom : Server ID
Type : REG_DWORD
Donn=E9es : 0x1

1 réponse

Avatar
Zoury
Salut Didier! :O)
















J'ai besoin d'obtenir une valeur contenu dans Default Mail Account dans la
clé :HKEY_CURRENT_USERSoftwareMicrosoftOfficeOutlookOMI Account Manager
dans le registre. j'utlise :
CompteMessagerie$ = GetKeyValue(HKEY_CURRENT_USER,
"SoftwareMicrosoftOfficeOutlookOMI Account ManagerDefault Mail
Account", "")
















Comprends-tu bien le concept de clés et de valeurs dans le registre? Les
clés *contiennent* les valeurs, je crois donc que la fonction devrait plutôt
être appelée comme ceci :
'***
CompteMessagerie$ = GetKeyValue(HKEY_CURRENT_USER,
"SoftwareMicrosoftOfficeOutlookOMI Account Manager", "Default Mail
Account")
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous