This is used in my database(s) and stored as modOS.
Expand|Select|Wrap|Line Numbers
- Option Compare Database
- Option Explicit
- Public Const conHKCR = &H80000000
- Public Const conHKCU = &H80000001
- Public Const conHKLM = &H80000002
- Public Const conHKU = &H80000003
- Public Const conStandardRightsAll = &H1F0000
- Public Const conReadControl = &H20000
- Public Const conStandardRightsRead = (conReadControl)
- Public Const conRegSz = 1
- Public Const conOK = 0&
- Public Const conKeyQueryValue = &H1
- Public Const conKeySetValue = &H2
- Public Const conKeyCreateLink = &H20
- Public Const conKeyCreateSubKey = &H4
- Public Const conKeyEnumerateSubKeys = &H8
- Public Const conKeyNotify = &H10
- Public Const conSynchronise = &H100000
- Public Const conRegOptionNonVolatile = 0
- Public Const conKeyAllAccess = ((conStandardRightsAll Or _
- conKeyQueryValue Or _
- conKeySetValue Or _
- conKeyCreateSubKey Or _
- conKeyEnumerateSubKeys Or _
- conKeyNotify Or _
- conKeyCreateLink) And _
- (Not conSynchronise))
- Public Const conKeyRead = ((conReadControl Or _
- conKeyQueryValue Or _
- conKeyEnumerateSubKeys Or _
- conKeyNotify) And _
- (Not conSynchronise))
- Private 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
- Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) _
- As Long
- Private Declare Function RegQueryValueExStr Lib "advapi32.dll" _
- Alias "RegQueryValueExA" (ByVal hKey As Long, _
- ByVal lpValueName As String, _
- ByVal lpReserved As Long, _
- lpType As Long, _
- ByVal lpData As String, _
- lpcbData As Long) As Long
- Public Function RegRead(ByVal lngHive As Long, _
- ByVal strKey As String, _
- ByVal strValue As String) As Variant
- Dim intIdx As Integer, intHK As Integer
- Dim strWork As String
- Dim lngRet As Long, lngLen As Long, lngHKey As Long, lngType As Long
- RegRead = Null
- strKey = strKey & Chr(0)
- lngRet = RegOpenKeyEx(lngHive, strKey, 0, conKeyRead, lngHKey)
- If lngRet = conOK Then
- 'Create buffer to store value
- strWork = Space(255)
- lngLen = 255
- lngRet = RegQueryValueExStr(lngHKey, _
- strValue, _
- 0&, _
- lngType, _
- strWork, _
- lngLen)
- RegRead = Left(strWork, lngLen - 1)
- If Len(RegRead) = 254 Then RegRead = Null
- 'Close key
- Call RegCloseKey(lngHKey)
- End If
- End Function