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]




Reply With Quote