Advertisement
4_2005-2006 Registry #169260

Get Registry Value From Full String Name

Get a REG_SZ (string) registry value from the full key name, such as "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DirectX". Functions for both default and named values.

AI

AI Summary: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

Source Code
original-source
'Retrieves a REG_SZ registry value
Public Function sGetNamedRegValue(sKey As String, sValue As String) As String
 Dim sHive As String
 Dim hKey As Long
 Dim hHive As Long
 Dim sData As String
 Dim lLenData As Long
 lLenData = 255
 sData = String$(255, 0)
 
 sHive = Left(sKey, InStr(sKey, "\") - 1)
 sKey = Replace(sKey, sHive & "\", "")
 
 Select Case sHive
  Case "HKEY_CLASSES_ROOT"
   hHive = HKEY_CLASSES_ROOT
  Case "HKEY_CURRENT_CONFIG"
   hHive = HKEY_CURRENT_CONFIG
  Case "HKEY_CURRENT_USER"
   hHive = HKEY_CURRENT_USER
  Case "HKEY_DYN_DATA"
   hHive = HKEY_DYN_DATA
  Case "HKEY_LOCAL_MACHINE"
   hHive = HKEY_LOCAL_MACHINE
  Case "HKEY_PERFORMANCE_DATA"
   hHive = HKEY_PERFORMANCE_DATA
  Case "HKEY_USERS"
   hHive = HKEY_USERS
 End Select
 
 Dim lKeyType As Long
 
 If RegOpenKeyEx(hHive, sKey, 0, KEY_READ, hKey) = ERROR_SUCCESS Then
  If RegQueryValueEx(hKey, sValue, 0, lKeyType, ByVal sData, lLenData) = ERROR_SUCCESS Then
   sGetNamedRegValue = Left(sData, InStr(sData, Chr(0)) - 1)
   RegCloseKey hKey
   Exit Function
  End If
  RegCloseKey hKey
 End If
 
 sGetNamedRegValue = ""
End Function
'Retrieves a default REG_SZ registry value
Public Function sGetRegValue(sKey As String) As String
 Dim sHive As String
 Dim hKey As Long
 Dim hHive As Long
 Dim sData As String
 Dim lLenData As Long
 lLenData = 255
 sData = String$(255, 0)
 
 sHive = Left(sKey, InStr(sKey, "\") - 1)
 sKey = Replace(sKey, sHive & "\", "")
 
 Select Case sHive
  Case "HKEY_CLASSES_ROOT"
   hHive = HKEY_CLASSES_ROOT
  Case "HKEY_CURRENT_CONFIG"
   hHive = HKEY_CURRENT_CONFIG
  Case "HKEY_CURRENT_USER"
   hHive = HKEY_CURRENT_USER
  Case "HKEY_DYN_DATA"
   hHive = HKEY_DYN_DATA
  Case "HKEY_LOCAL_MACHINE"
   hHive = HKEY_LOCAL_MACHINE
  Case "HKEY_PERFORMANCE_DATA"
   hHive = HKEY_PERFORMANCE_DATA
  Case "HKEY_USERS"
   hHive = HKEY_USERS
 End Select
 
 If RegQueryValue(hHive, sKey, sData, lLenData) = ERROR_SUCCESS Then
  sGetRegValue = Left(sData, InStr(sData, Chr(0)) - 1)
  Exit Function
 End If
 
 sGetRegValue = ""
End Function
Original Comments (3)
Recovered from Wayback Machine