' api_reg.sbp ' Registry Operation #ifndef _INC_REG #define _INC_REG #ifdef UNICODE Const _FuncName_RegConnectRegistry = "RegConnectRegistryW" Const _FuncName_RegCreateKeyEx = "RegCreateKeyExW" Const _FuncName_RegDeleteKey = "RegDeleteKeyW" Const _FuncName_RegDeleteValue = "RegDeleteValueW" Const _FuncName_RegEnumKeyEx = "RegEnumKeyExW" Const _FuncName_RegEnumValue = "RegEnumValueW" Const _FuncName_RegLoadKey = "RegLoadKeyW" Const _FuncName_RegOpenKeyEx = "RegOpenKeyExW" Const _FuncName_RegQueryInfoKey = "RegQueryInfoKeyW" Const _FuncName_RegQueryMultipleValues = "RegQueryMultipleValuesW" Const _FuncName_RegQueryValueEx = "RegQueryValueExW" Const _FuncName_RegSaveKey = "RegSaveKeyW" Const _FuncName_RegSetValueEx = "RegSetValueExW" Const _FuncName_RegUnLoadKey = "RegUnLoadKeyW" #else Const _FuncName_RegConnectRegistry = "RegConnectRegistryA" Const _FuncName_RegCreateKeyEx = "RegCreateKeyExA" Const _FuncName_RegDeleteKey = "RegDeleteKeyA" Const _FuncName_RegDeleteValue = "RegDeleteValueA" Const _FuncName_RegEnumKeyEx = "RegEnumKeyExA" Const _FuncName_RegEnumValue = "RegEnumValueA" Const _FuncName_RegLoadKey = "RegLoadKeyA" Const _FuncName_RegOpenKeyEx = "RegOpenKeyExA" Const _FuncName_RegQueryInfoKey = "RegQueryInfoKeyA" Const _FuncName_RegQueryMultipleValues = "RegQueryMultipleValuesA" Const _FuncName_RegQueryValueEx = "RegQueryValueExA" Const _FuncName_RegSaveKey = "RegSaveKeyA" Const _FuncName_RegSetValueEx = "RegSetValueExA" Const _FuncName_RegUnLoadKey = "RegUnLoadKeyA" #endif Const READ_CONTROL = &H00020000 Const STANDARD_RIGHTS_ALL = &H001F0000 ' Security Mask Const KEY_QUERY_VALUE = &H0001 Const KEY_SET_VALUE = &H0002 Const KEY_CREATE_SUB_KEY = &H0004 Const KEY_ENUMERATE_SUB_KEYS = &H0008 Const KEY_NOTIFY = &H0010 Const KEY_CREATE_LINK = &H0020 Const KEY_READ = (READ_CONTROL Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE) Const KEY_WRITE = (READ_CONTROL 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) ' Options Const REG_OPTION_NON_VOLATILE = &H00000000 Const REG_OPTION_VOLATILE = &H00000001 Const REG_OPTION_BACKUP_RESTORE = &H00000004 ' Reserved Key Handles Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_USERS = &H80000003 Const HKEY_PERFORMANCE_DATA = &H80000004 Const HKEY_CURRENT_CONFIG = &H80000005 Const HKEY_DYN_DATA = &H80000006 ' Key Create/Open Disposition Const REG_CREATED_NEW_KEY = &H00000001 Const REG_OPENED_EXISTING_KEY = &H00000002 ' Data Type Const REG_NONE = 0 Const REG_SZ = 1 Const REG_EXPAND_SZ = 2 Const REG_BINARY = 3 Const REG_DWORD = 4 Const REG_DWORD_LITTLE_ENDIAN = 4 Const REG_DWORD_BIG_ENDIAN = 5 Const REG_LINK = 6 Const REG_MULTI_SZ = 7 Const REG_RESOURCE_LIST = 8 Type VALENTW ve_valuename As PWSTR ve_valuelen As DWord ve_valueptr As ULONG_PTR ve_type As DWord End Type Type VALENTA ve_valuename As PSTR ve_valuelen As DWord ve_valueptr As ULONG_PTR ve_type As DWord End Type #ifdef UNICODE TypeDef VALENT = VALENTW #else TypeDef VALENT = VALENTA #endif '------------------------ ' Registry API Functions Declare Function RegCloseKey Lib "advapi32" (hKey As HKEY) As Long Declare Function RegConnectRegistry Lib "advapi32" Alias _FuncName_RegConnectRegistry (pMachineName As PCTSTR, hKey As HKEY, ByRef hkResult As HKEY) As Long Declare Function RegCreateKeyEx Lib "advapi32" Alias _FuncName_RegCreateKeyEx (hKey As HKEY, lpSubKey As PCTSTR, Reserved As DWord, lpClass As PTSTR, dwOptions As DWord, samDesired As Long, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByRef phkResult As HKEY, lpdwDisposition As *DWord) As Long Declare Function RegDeleteKey Lib "advapi32" Alias _FuncName_RegDeleteKey (hKey As HKEY, lpSubKey As PCTSTR) As Long Declare Function RegDeleteValue Lib "advapi32" Alias _FuncName_RegDeleteValue (hKey As HKEY, lpValueName As PCTSTR) As Long Declare Function RegEnumKeyEx Lib "advapi32" Alias _FuncName_RegEnumKeyEx (hKey As HKEY, dwIndex As DWord, pName As PTSTR, ByRef cName As DWord, pReserved As *DWord, pClass As PTSTR, ByRef cClass As DWord, pftLastWriteTime As *FILETIME) As Long Declare Function RegEnumValue Lib "advapi32" Alias _FuncName_RegEnumValue (hKey As HKEY, dwIndex As DWord, pValueName As PTSTR, ByRef cValueName As DWord, pReserved As *DWord, pType As *DWord, pData As *Byte, pcbData As *DWord) As Long Declare Function RegFlushKey Lib "advapi32"(hKey As HKEY) As Long /* Declare Function RegLoadKey Lib "advapi32" Alias _FuncName_RegLoadKey (hKey As HKEY, pSubKey As PCTSTR, pFile As PCTSTR) As Long Declare Function RegOpenKeyEx Lib "advapi32" Alias _FuncName_RegOpenKeyEx (hKey As HKEY, lpSubKey As PCTSTR, ulOptions As DWord, samDesired As Long, ByRef phkResult As HKEY) As Long Declare Function RegQueryInfoKey Lib "advapi32" Alias _FuncName_RegQueryInfoKey (hKey As HKEY, pClass As PTSTR, pcClass As *DWord, pReserved As *DWord, pcSubKeys As *DWord, pcMaxSubKeyLen As *DWord, pcMaxClassLen As *DWord, pcValues As *DWord, pcMaxValueNameLen As *DWord, pcMaxValueLen As *DWord, pcbSecurityDescriptor As *DWord, pftLastWriteTime As *FILETIME) As Long Declare Function RegQueryMultipleValues Lib "advapi32" Alias _FuncName_RegQueryMultipleValues (hKey As HKEY, val_list As *VALENT, num_vals As DWord, pValueBuf As PTSTR, ByRef dwTotsize As DWord) As Long Declare Function RegQueryValueEx Lib "advapi32" Alias _FuncName_RegQueryValueEx (hKey As HKEY, lpValueName As PCTSTR, lpReserved As DWord, lpType As *DWord, lpData As VoidPtr, lpcbData As *DWord) As Long Declare Function RegSaveKey Lib "advapi32" Alias _FuncName_RegSaveKey (hKey As HKEY, pFile As PCTSTR, pSecurityAttributes As *SECURITY_ATTRIBUTES) As Long Declare Function RegSetValueEx Lib "advapi32" Alias _FuncName_RegSetValueEx (hKey As HKEY, lpValueName As PCTSTR, Reserved As DWord, dwType As DWord, lpData As VoidPtr, cbData As DWord) As Long Declare Function RegUnLoadKey Lib "advapi32" Alias _FuncName_RegUnLoadKey (hKey As HKEY, pSubKey As PCTSTR) As Long */ '_INC_REG