@RegQueryValue
Queries the Windows registry for a specified value.

(from @RegQueryValue, Notes Designer Help database)

Although this function can be used in LotusScript by means of an Evaluate, it doesn’t work at all for the registry (Default) values. So here is a LotusScript RegQueryValue full blown function, in its own RegistryAccess library.

'RegistryAccess: Option Public Option Declare ' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/registry_functions.asp ' http://www.windowsdevcenter.com/lpt/a/4923 Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Public Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type %REM LONG RegOpenKeyEx( HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult ); %END REM 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 %REM LONG RegCloseKey( HKEY hKey ); %END REM Declare Function RegCloseKey _ Lib "advapi32.dll" _ ( Byval hKey As Long ) _ As Long %REM LONG RegQueryValueEx( HKEY hKey, LPCTSTR lpValueName, LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData ); %END REM Declare Function RegQueryValueEx _ 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 %REM LONG RegEnumKeyEx( HKEY hKey, DWORD dwIndex, LPTSTR lpName, LPDWORD lpcName, LPDWORD lpReserved, LPTSTR lpClass, LPDWORD lpcClass, PFILETIME lpftLastWriteTime ); %END REM Declare Function RegEnumKeyEx _ Lib "advapi32.dll" _ Alias "RegEnumKeyExA" _ ( Byval hKey As Long _ , Byval dwIndex As Long _ , Byval lpname As String _ , lpcbName As Long _ , Byval lpReserved As Long _ , Byval lpClass As String _ , lpcbClass As Long _ , lpftLastWriteTime As FILETIME ) _ As Long %REM LONG RegSetValueEx( HKEY hKey, LPCTSTR lpValueName, DWORD Reserved, DWORD dwType, const BYTE* lpData, DWORD cbData ); %END REM Declare Function RegSetValueEx _ Lib "advapi32.dll" _ Alias "RegSetValueExA" _ ( Byval hKey As Long _ , Byval lpValueName As String _ , Byval Reserved As Long _ , Byval dwType As Long _ , Byval lpData As String _ , Byval cbData As Long ) _ As Long %REM LONG RegCreateKeyEx( HKEY hKey, LPCTSTR lpSubKey, DWORD Reserved, LPTSTR lpClass, DWORD dwOptions, REGSAM samDesired, LPSECURITY_ATTRIBUTES lpSecurityAttributes, PHKEY phkResult, LPDWORD lpdwDisposition ); %END REM Declare Function RegCreateKeyEx _ Lib "advapi32.dll" _ Alias "RegCreateKeyExA" _ ( Byval hKey As Long _ , Byval lpSubKey As String _ , Byval Reserved As Long _ , Byval lpClass As String _ , Byval dwOptions As Long _ , Byval samDesired As Long _ , lpSecurityAttributes As SECURITY_ATTRIBUTES _ , phkResult As Long _ , lpdwDisposition As Long ) _ As Long %REM LONG RegQueryInfoKey( HKEY hKey, LPTSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime ); %END REM Declare Function RegQueryInfoKey _ Lib "advapi32.dll" _ Alias "RegQueryInfoKeyA" _ ( Byval hKey As Long _ , Byval lpClass As String _ , lpcbClass As Long _ , Byval lpReserved As Long _ , lpcSubKeys As Long _ , lpcbMaxSubKeyLen As Long _ , lpcbMaxClassLen As Long _ , lpcValues As Long _ , lpcbMaxValueNameLen As Long _ , lpcbMaxValueLen As Long _ , lpcbSecurityDescriptor As Long _ , lpftLastWriteTime As FILETIME ) _ As Long Declare Function SHDeleteKey _ Lib "shlwapi.dll" _ Alias "SHDeleteKeyA" _ ( Byval hKey As Long _ , Byval pszSubKey As String ) _ As Long '-- Constant Definitions for WIN32API Dim regKey List As Long Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_CONFIG = &H80000005 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const HKEY_PERFORMANCE_DATA = &H80000004 'Dim regError List As Long Const ERROR_SUCCESS = 0& Const ERROR_FILE_NOT_FOUND = 2& ' Registry path does not exist Const ERROR_ACCESS_DENIED = 5& ' Requested permissions not available Const ERROR_INVALID_HANDLE = 6& ' Invalid handle or top-level key Const ERROR_BAD_NETPATH = 53& ' Network path not found Const ERROR_INVALID_PARAMETER = 87& ' Bad parameter to a Win32 API function Const ERROR_CALL_NOT_IMPLEMENTED = 120& ' Function valid only in WinNT/2000?XP Const ERROR_INSUFFICIENT_BUFFER = 122& ' Buffer too small to hold data Const ERROR_BAD_PATHNAME = 161& ' Registry path does not exist Const ERROR_NO_MORE_ITEMS = 259& ' Invalid enumerated value Const ERROR_BADDB = 1009& ' Corrupted registry Const ERROR_BADKEY = 1010& ' Invalid registry key Const ERROR_CANTOPEN = 1011& ' Cannot open registry key Const ERROR_CANTREAD = 1012& ' Cannot read from registry key Const ERROR_CANTWRITE = 1013& ' Cannot write to registry key Const ERROR_REGISTRY_RECOVERED = 1014& ' Recovery of part of registry successful Const ERROR_REGISTRY_CORRUPT = 1015& ' Corrupted registry Const ERROR_REGISTRY_IO_FAILED = 1016& ' Input/output operation failed Const ERROR_NOT_REGISTRY_FILE = 1017& ' Input file not in registry file format Const ERROR_KEY_DELETED = 1018& ' Key already deleted Const ERROR_KEY_HAS_CHILDREN = 1020& ' Key has subkeys & cannot be deleted Const SYNCHRONIZE = &H100000 'Dim regStandard List As Long Const STANDARD_RIGHTS_READ = &H20000 Const STANDARD_RIGHTS_WRITE = &H20000 Const STANDARD_RIGHTS_EXECUTE = &H20000 Const STANDARD_RIGHTS_REQUIRED = &HF0000 Const STANDARD_RIGHTS_ALL = &H1F0000 'Dim regAction List As Long Const KEY_CREATE_LINK = &H20 Const KEY_CREATE_SUB_KEY = &H4 Const KEY_ENUMERATE_SUB_KEYS = &H8 Const KEY_NOTIFY = &H10 Const KEY_QUERY_VALUE = &H1 Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE)) Const KEY_SET_VALUE = &H2 Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE)) Const KEY_EXECUTE = (KEY_READ) Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE)) Const REG_OPTION_BACKUP_RESTORE = 4 Const REG_OPTION_NON_VOLATILE = 0 Const REG_OPTION_VOLATILE = 1 Const REG_CREATED_NEW_KEY = &H1 ' A new key was created Const REG_OPENED_EXISTING_KEY = &H2 ' An existing key was opened ' Reg Data Types... Const RRF_RT_ANY = &H0000FFFF Const REG_NONE = 0 ' No value type Const REG_SZ = 1 ' Unicode nul terminated string Const REG_EXPAND_SZ = 2 ' Unicode nul terminated string Const REG_BINARY = 3 ' Free form binary Const REG_DWORD = 4 ' 32-bit number Const REG_DWORD_LITTLE_ENDIAN = 4 ' 32-bit number (same as REG_DWORD) Const REG_DWORD_BIG_ENDIAN = 5 ' 32-bit number Const REG_LINK = 6 ' Symbolic Link (unicode) Const REG_MULTI_SZ = 7 ' Multiple Unicode strings Function RegQueryValue( keyName As String, subKeyName As String, valueName As String ) As String %INCLUDE "error_handling" Dim sKeyType As Long ' to return the key type Dim lpHKey As Long ' return handle to opened key Dim lpcbData As Long ' length of data in returned string Dim MainKey As Long MainKey = regKey( keyName ) ' Open key If RegOpenKeyEx( MainKey, SubKeyName, 0&, KEY_READ, lpHKey ) <> ERROR_SUCCESS Then RegQueryValue = "" Exit Function ' No key open, so leave End If Dim lBuffer As Long lBuffer = 0 ' Ask for buffer size for this value Call RegQueryValueEx( lpHKey, valueName, 0, sKeyType, 0, lBuffer ) ' Initialize buffer Dim sBuffer As String sBuffer = Space( lBuffer ) & Chr( 0 ) lBuffer = Len( sBuffer ) If RegQueryValueEx( lpHKey, valueName, 0, sKeyType, sBuffer, lBuffer ) <> ERROR_SUCCESS Then RegQueryValue = "" 'Value probably doesn't exist Exit Function End If ' Trim returned buffer to extract key name sBuffer = Left( sBuffer, lBuffer - 1 ) RegQueryValue = sBuffer ' Always close opened keys Call RegCloseKey( lpHKey ) End Function Sub Initialize %INCLUDE "error_handling" regKey( "HKEY_CLASSES_ROOT" ) = HKEY_CLASSES_ROOT regKey( "HKEY_CURRENT_CONFIG" ) = HKEY_CURRENT_CONFIG regKey( "HKEY_CURRENT_USER" ) = HKEY_CURRENT_USER regKey( "HKEY_LOCAL_MACHINE" ) = HKEY_LOCAL_MACHINE regKey( "HKEY_USERS" ) = HKEY_USERS regKey( "HKEY_PERFORMANCE_DATA" ) = HKEY_PERFORMANCE_DATA End Sub Sub Terminate End Sub