|
Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" _
(ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal _ samDesired As Long, phkResult As Long) As Long Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _ (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType _ As Long, lpData As Any, lpcbData As Long) As Long Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Function sdaGetRegEntry(strKey As String, strSubKeys As String, strValName _ As String, lngType As Long) As String On Error GoTo sdaGetRegEntry_Err Dim lngResult As Long, lngKey As Long Dim lngHandle As Long, lngcbData As Long Dim strRet As String Select Case strKey Case "HKEY_CLASSES_ROOT": lngKey = &H80000000 Case "HKEY_CURRENT_CONFIG": lngKey = &H80000005 Case "HKEY_CURRENT_USER": lngKey = &H80000001 Case "HKEY_DYN_DATA": lngKey = &H80000006 Case "HKEY_LOCAL_MACHINE": lngKey = &H80000002 Case "HKEY_PERFORMANCE_DATA": lngKey = &H80000004 Case "HKEY_USERS": lngKey = &H80000003 Case Else: Exit Function End Select If Not ERROR_SUCCESS = RegOpenKeyEx(lngKey, strSubKeys, 0&, KEY_READ, lngHandle) Then Exit Function lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData) strRet = Space(lngcbData) lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData) If Not ERROR_SUCCESS = RegCloseKey(lngHandle) Then lngType = -1& sdaGetRegEntry = strRet sdaGetRegEntry_Exit: On Error GoTo 0 Exit Function sdaGetRegEntry_Err: lngType = -1& MsgBox Err & "> " & Error$, 16, "GenUtils/sdaGetRegEntry" Resume sdaGetRegEntry_Exit End Function |