[DllImport("advapi32.dll", SetLastError=true)]
static extern uint RegEnumValue(
IntPtr hKey,
uint dwIndex,
StringBuilder lpValueName,
ref uint lpcValueName,
IntPtr lpReserved,
IntPtr lpType,
IntPtr lpData,
IntPtr lpcbData);
Declare Auto Function RegEnumValue Lib "Advapi32" ( _
ByVal hKey As IntPtr, _
ByVal dwIndex As Integer, _
ByVal lpValueName As StringBuilder, _
ByRef lpcValueName As Integer, _
ByVal lpReserved As IntPtr, _
ByVal lpType As IntPtr, _
ByVal lpData As IntPtr, _
ByVal lpcbData As IntPtr _
) As Integer
None.
RegistryKey.GetValue
LONG RegEnumValue(
HKEY hKey,
DWORD dwIndex,
LPTSTR lpValueName,
LPDWORD lpcValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
Please add some!
Public Function GetValueNames() As String()
Dim i, ret, NameSize As Integer
Dim sc As New StringCollection
Dim sb As New StringBuilder(MAX_REG_KEYNAME_SIZE + 1)
Dim ans(-1) As String
' quick sanity check
If hKey.Equals(IntPtr.Zero) Then
Throw New ApplicationException("Cannot access a closed registry key")
End If
Do
NameSize = MAX_REG_KEYNAME_SIZE + 1
ret = RegEnumValue(hKey, i, sb, NameSize, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero)
If ret <> 0 Then
Exit Do
End If
sc.Add(sb.ToString)
i += 1
Loop
If sc.Count > 0 Then
ReDim ans(sc.Count - 1)
sc.CopyTo(ans, 0)
End If
Return ans
End Function