1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
Option Explicit
Const DERNIER_ITEM = 259&
Const Key_CURRENT_CONFIG = &H80000005
Const Key_LOCAL_MACHINE = &H80000002
Const BUFFER = &HFF&
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal Key As Long) As Long
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal Key As Long, ByVal lpSubKey As String, phkRetour As Long) As Long
Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal Key As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As Any) As Long
Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal Key As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Sub Form_Load()
Dim Entrée As String
Dim Sortie As String
' Il faut impérativement connaître la valeur en entrée
Entrée = "ProgramFilesDir"
Sortie = RegExtract(Entrée)
MsgBox Sortie : end
End Sub
Function RegExtract(ByVal Entrée As String) As String
Dim Clé As Long, Compteur As Long, Len_In As Long, Len_Out As Long
Dim Str_In As String, Str_Out As String
If RegOpenKey(Key_LOCAL_MACHINE, "Software\Microsoft\Windows\CurrentVersion", Clé) = 0 Then
'initialisation
Str_In = Space(BUFFER): Str_Out = Space(BUFFER)
Len_In = BUFFER: Len_Out = BUFFER
'On scrute toutes les lignes
While RegEnumValue(Clé, Compteur, Str_In, Len_In, 0, ByVal 0&, ByVal Str_Out, Len_Out) <> DERNIER_ITEM
If Len_Out > 0 And Left$(Str_In, Len_In) = Entrée Then
RegExtract = Left$(Str_Out, Len_Out - 1)
End If
Compteur = Compteur + 1
Str_In = Space(BUFFER)
Str_Out = Space(BUFFER)
Len_In = BUFFER
Len_Out = BUFFER
Wend
'Fermer la clé du registre
RegCloseKey Clé
Else
MsgBox " Erreur à l'ouverture de la clé du registre."
End If
End Function |
Partager