Advertisement
7_2009-2012 Registry #236814

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

ИИ-обзор: 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.

Исходный код
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
Оригинальные комментарии (3)
Восстановлено из Wayback Machine