Connecting Tech Pros Worldwide Forums | Help | Site Map

Module to Read from the Windows Registry

NeoPa's Avatar
Administrator
 
Join Date: Oct 2006
Location: London - UK
Posts: 15,747
#1   Mar 12 '07
This can be built on, but I've not needed to so far.
This is used in my database(s) and stored as modOS.

Expand|Select|Wrap|Line Numbers
  1. Option Compare Database
  2. Option Explicit
  3.  
  4. Public Const conHKCR = &H80000000
  5. Public Const conHKCU = &H80000001
  6. Public Const conHKLM = &H80000002
  7. Public Const conHKU = &H80000003
  8. Public Const conStandardRightsAll = &H1F0000
  9. Public Const conReadControl = &H20000
  10. Public Const conStandardRightsRead = (conReadControl)
  11. Public Const conRegSz = 1
  12. Public Const conOK = 0&
  13. Public Const conKeyQueryValue = &H1
  14. Public Const conKeySetValue = &H2
  15. Public Const conKeyCreateLink = &H20
  16. Public Const conKeyCreateSubKey = &H4
  17. Public Const conKeyEnumerateSubKeys = &H8
  18. Public Const conKeyNotify = &H10
  19. Public Const conSynchronise = &H100000
  20. Public Const conRegOptionNonVolatile = 0
  21. Public Const conKeyAllAccess = ((conStandardRightsAll Or _
  22.                                 conKeyQueryValue Or _
  23.                                 conKeySetValue Or _
  24.                                 conKeyCreateSubKey Or _
  25.                                 conKeyEnumerateSubKeys Or _
  26.                                 conKeyNotify Or _
  27.                                 conKeyCreateLink) And _
  28.                                (Not conSynchronise))
  29. Public Const conKeyRead = ((conReadControl Or _
  30.                             conKeyQueryValue Or _
  31.                             conKeyEnumerateSubKeys Or _
  32.                             conKeyNotify) And _
  33.                            (Not conSynchronise))
  34.  
  35. Private Declare Function RegOpenKeyEx Lib "advapi32.dll" _
  36.     Alias "RegOpenKeyExA" (ByVal hKey As Long, _
  37.                            ByVal lpSubKey As String, _
  38.                            ByVal ulOptions As Long, _
  39.                            ByVal samDesired As Long, _
  40.                            phkResult As Long) As Long
  41. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) _
  42.                              As Long
  43. Private Declare Function RegQueryValueExStr Lib "advapi32.dll" _
  44.     Alias "RegQueryValueExA" (ByVal hKey As Long, _
  45.                               ByVal lpValueName As String, _
  46.                               ByVal lpReserved As Long, _
  47.                               lpType As Long, _
  48.                               ByVal lpData As String, _
  49.                               lpcbData As Long) As Long
  50.  
  51. Public Function RegRead(ByVal lngHive As Long, _
  52.                         ByVal strKey As String, _
  53.                         ByVal strValue As String) As Variant
  54.     Dim intIdx As Integer, intHK As Integer
  55.     Dim strWork As String
  56.     Dim lngRet As Long, lngLen As Long, lngHKey As Long, lngType As Long
  57.  
  58.     RegRead = Null
  59.     strKey = strKey & Chr(0)
  60.     lngRet = RegOpenKeyEx(lngHive, strKey, 0, conKeyRead, lngHKey)
  61.     If lngRet = conOK Then
  62.         'Create buffer to store value
  63.         strWork = Space(255)
  64.         lngLen = 255
  65.         lngRet = RegQueryValueExStr(lngHKey, _
  66.                                     strValue, _
  67.                                     0&, _
  68.                                     lngType, _
  69.                                     strWork, _
  70.                                     lngLen)
  71.         RegRead = Left(strWork, lngLen - 1)
  72.         If Len(RegRead) = 254 Then RegRead = Null
  73.         'Close key
  74.         Call RegCloseKey(lngHKey)
  75.     End If
  76. End Function



Reply