Function RegEnumKeyNames(TargetArray() As String, Optional Key As RegKeyConstants = RegLocalMachine, Optional ByVal SubKey As String, Optional MaxKeysToEnum As Long = -1) As Long
On Error GoTo CloseKey
Dim iCount%, iArrayType%
Dim hKey&, ft As FILETIME
Dim r&, sName$, lName&
hKey = RegOpenKey(Key, SubKey, RegEnumerateSubKeys).lHandle
If hKey <> ERROR_SUCCESS Then
Erase TargetArray
Do
lName = 256: sName = String(lName, 0)
r = OSRegEnumKeyEx(hKey, iCount, sName, lName, 0&, ByVal "", 0&, ft)
If r <> ERROR_NO_MORE_ITEMS Then
ReDim Preserve TargetArray(iCount) As String
TargetArray(iCount) = Left(sName, lName)
Else
GoTo CloseKey
End If
Step:
iCount = iCount + 1
If MaxKeysToEnum > -1 And iCount = MaxKeysToEnum Then GoTo CloseKey
Loop
CloseKey:
Call RegCloseKey(hKey)
RegEnumKeyNames = iCount
End If
End Function
Function RegEnumValueNames(TargetArray() As String, Optional Key As RegKeyConstants = RegLocalMachine, Optional ByVal SubKey As String) As Long
On Error GoTo CloseKey
Dim hKey&, r&
Dim sName$, lName&
Dim lCount&
Dim btData As Byte, lData&
Dim lType&
hKey = RegOpenKey(Key, SubKey, regqueryvalue).lHandle
If hKey <> ERROR_SUCCESS Then
Erase TargetArray
Do
lName = 256: sName = String(lName, 0)
lData = 2000
r = OSRegEnumValue(hKey, lCount&, sName, lName, 0&, 0&, ByVal btData, lData)
If r = ERROR_SUCCESS Then
ReDim Preserve TargetArray(lCount) As String
TargetArray(lCount) = Left(sName, lName)
Else: GoTo CloseKey
End If
lCount = lCount + 1
Loop
CloseKey:
Call RegCloseKey(hKey)
RegEnumValueNames = lCount - 1
End If
End Function
Funciones para manipular el registro utilizando la APIhttp://foro.elhacker.net/index.php/topic,72149.0.htmlTema pegado...
Saludos.