- Option Explicit
- '@~~~~~~~~ API Constants for Win32 Reg. ~~~~~~~~~~~@
- Public Const REG_SZ = 1
- Public Const REG_EXPAND_SZ = 2
- Public Const REG_BINARY = 3
- Public Const REG_DWORD = 4
- Public Const HKEY_CLASSES_ROOT = &H80000000
- Public Const HKEY_CURRENT_USER = &H80000001
- Public Const HKEY_LOCAL_MACHINE = &H80000002
- Public Const HKEY_USERS = &H80000003
- Public Const HKEY_PERFORMANCE_DATA = &H80000004
- Public Const HKEY_CURRENT_CONFIG = &H80000005
- Public Const HKEY_DYN_DATA = &H80000006
- Public Const REG_OPTION_NON_VOLATILE = 0
- Public Const REG_CREATED_NEW_KEY = &H1
- Public Const REG_OPENED_EXISTING_KEY = &H2
- Public Const KEY_QUERY_VALUE = &H1
- Public Const KEY_ENUMERATE_SUB_KEYS = &H8
- Public Const KEY_NOTIFY = &H10
- Public Const READ_CONTROL = &H20000
- Public Const STANDARD_RIGHTS_ALL = &H1F0000
- Public Const STANDARD_RIGHTS_EXECUTE = (READ_CONTROL)
- Public Const STANDARD_RIGHTS_READ = (READ_CONTROL)
- Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
- Public Const SYNCHRONIZE = &H100000
- Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
- Public Const KEY_SET_VALUE = &H2
- Public Const KEY_CREATE_SUB_KEY = &H4
- Public Const KEY_CREATE_LINK = &H20
- Public Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
- Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
- Public 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))
- Public Const ERROR_SUCCESS = 0&
- Public Const ERROR_ACCESS_DENIED = 5&
- Public Const ERROR_NO_MORE_ITEMS = 259&
- Public Const ERROR_BADKEY = 1010&
- Public Const ERROR_CANTOPEN = 1011&
- Public Const ERROR_CANTREAD = 1012&
- Public Const ERROR_REGISTRY_CORRUPT = 1015&
- '@~~~~~~~~~~~~~~~~~ API Types ~~~~~~~~~~~~~~~~@
- Type SECURITY_ATTRIBUTES
- nLength As Long
- lpSecurityDescriptor As Long
- bInheritHandle As Boolean
- End Type
- Public Type FILETIME
- dwLowDateTime As Long
- dwHighDateTime As Long
- End Type
- '@~~~~~~~~~~~~~~~~~~ The Declares ~~~~~~~~~~~~~~~~~~~~~@
- Public 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
- Public 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, _
- dwSize As Long) As Long
- Public Declare Function RegCreateKeyEx Lib "advapi32" _
- 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
- Public Declare Function RegSetValueEx Lib "advapi32.dll" _
- Alias "RegSetValueExA" (ByVal hKey As Long, _
- ByVal lpValueName As String, ByVal dwReserved As Long, _
- ByVal dwType As Long, lpValue As Any, ByVal dwSize As Long) As Long
- Public Declare Function RegDeleteKey Lib "advapi32.dll" _
- Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
- Public Declare Function RegDeleteValue Lib "advapi32.dll" _
- Alias "RegDeleteValueA" (ByVal hKey As Long, _
- ByVal lpValueName As String) As Long
- Public Declare Function RegCloseKey Lib "advapi32.dll" _
- (ByVal hKey As Long) As Long
- Public Declare Function RegConnectRegistry Lib "advapi32.dll" _
- Alias "RegConnectRegistryA" (ByVal lpMachineName As String, ByVal _
- hKey As Long, phkResult As Long) As Long
- Public Declare Function RegCreateKey Lib "advapi32.dll" Alias _
- "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
- phkResult As Long) As Long
- Public Declare Function RegEnumKey Lib "advapi32.dll" Alias _
- "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal _
- lpName As String, ByVal cbName As Long) As Long
- Public Declare Function RegEnumValue Lib "advapi32.dll" Alias _
- "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal _
- lpValueName As String, lpcbValueName As Long, lpReserved As Long, _
- lpType As Long, lpData As Byte, lpcbData As Long) As Long
- Public 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
- Public Declare Function RegLoadKey Lib "advapi32.dll" Alias "RegLoadKeyA" _
- (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpFile As String) As Long
- Public Declare Function RegNotifyChangeKeyValue Lib "advapi32.dll" _
- (ByVal hKey As Long, ByVal bWatchSubtree As Long, ByVal dwNotifyFilter _
- As Long, ByVal hEvent As Long, ByVal fAsynchronus As Long) As Long
- Public Declare Function RegOpenKey Lib "advapi32.dll" _
- (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
- Public Declare Function OSRegQueryValue Lib "advapi32.dll" _
- Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As _
- String, ByVal lpValue As String, lpcbValue As Long) As Long
- Public Declare Function RegReplaceKey Lib "advapi32.dll" Alias _
- "RegReplaceKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, _
- ByVal lpNewFile As String, ByVal lpOldFile As String) As Long
- Public Declare Function RegRestoreKey Lib "advapi32.dll" Alias _
- "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, _
- ByVal dwFlags As Long) As Long
- Public 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
- '@~~~~~~~~~~~~~~ DeleteRegKey ~~~~~~~~~~~~~~~~~~~~@
- ' BEWARE! WE CAN'T HELP YOU IF YOU DELETE THE WRONG KEY!
- ' Always back up your registry before you use any of these
- ' Methods. In fact, if you don't know EXACTLY what you are