Lire une valeur de la base de registres

Contenu du snippet

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, ByRef phkResult As Long) As Long
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByRef lpType As Long, ByRef lpData As Any, ByRef lpcbData As Long) As Long

Private Const KEY_QUERY_VALUE As Long = &H1
Private Const STANDARD_RIGHTS_READ = &H20000
Private Const KEY_ENUMERATE_SUB_KEYS = &H8&
Private Const KEY_NOTIFY = &H10&
Private Const SYNCHRONIZE = &H100000
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))

Private Const HKEY_CURRENT_USER = &H80000001

Private Const REG_SZ = 1
Private Const REG_DWORD = 4

Private Property Get RegKeyValue(ByVal veRootKey As Long, ByRef vsKeyName As String, ByRef vsValueName As String) As Variant
Dim hKey As Long
Dim sBuffer As String
Dim nBuffer As Long
Dim nLength As Long
Dim eValueType As Long
   If 0 = RegOpenKeyEx(veRootKey, vsKeyName, 0&, KEY_READ, hKey) Then
       RegQueryValueEx hKey, vsValueName, 0, eValueType, ByVal 0&, nLength
           
       Select Case eValueType
           Case REG_SZ
               sBuffer = Space$(nLength)
               RegQueryValueEx hKey, vsValueName, 0, eValueType, ByVal sBuffer, nLength
               RegKeyValue = Left$(sBuffer, nLength - 1)
           Case REG_DWORD
               RegQueryValueEx hKey, vsValueName, 0, eValueType, nBuffer, 4
               RegKeyValue = nBuffer
       End Select
       RegCloseKey hKey
   End If
End Property 

Compatibilité : VB6, VBA

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.