Sure thing:

Code:
Option Explicit

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 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
Private Const HKEY_CURRENT_USER = &H80000001
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const HKEY_CURRENT_CONFIG = &H80000005
Private Const ERROR_SUCCESS = 0&
Private Const KEY_QUERY_VALUE = &H1
Private Const KEY_NOTIFY = &H10
Private Const READ_CONTROL = &H20000
Private Const KEY_ENUMERATE_SUB_KEYS = &H8
Private Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Private Const SYNCHRONIZE = &H100000
Private Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Private Const ERROR_SUCCESS = 0
Private Const REG_SZ = 1

Public Function GetRegistryValueData(pRoot As Long, pKey As String, pValue As String) As String
    Dim lKeyHandle As Long
    Dim lRet As Long
    Dim strBuffer As String
    
    lRet = RegOpenKeyEx(pRoot, pKey, 0, KEY_READ, lKeyHandle)
    If lRet = ERROR_SUCCESS Then
        strBuffer = Space(255)
        lRet = RegQueryValueEx(lKeyHandle, pValue, 0, REG_SZ, strBuffer, Len(strBuffer))
        If lRet = ERROR_SUCCESS Then
            GetRegistryValueData = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
        End If
        RegCloseKey lKeyHandle
    End If
End Function

Usage: GetRegistryValueData RootKey, KeyName, ValueName

Example:strText = GetRegistryValueData(HKEY_LOCAL_MACHINE, "Software\MyProgram", "MyProgram.exe")

strText now has the value.


Regards,

------------------

Serge

Software Developer
[email protected]
[email protected]