Public Const HKEY_CLASSES_ROOT  As Long = &H80000000
Public Const HKEY_CURRENT_USER  As Long = &H80000001
Public Const HKEY_LOCAL_MACHINE As Long = &H80000002

Const REG_OPTION_NON_VOLATILE   As Long = 0
Const KEY_SET_VALUE             As Long = &H2
Const ERROR_SUCCESS             As Long = 0
Const REG_SZ                    As Long = 1
Const KEY_QUERY_VALUE           As Long = &H1
Const KEY_ENUMERATE_SUB_KEYS    As Long = &H8

Private 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, hkResult As Long, _
    lpdwDisposition As Long) As Long

Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" _
    (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
    ByVal dwType As Long, ByVal szData As String, ByVal cbData As Long) As Long

Private Declare Function RegOpenKeyEx Lib "advapi32" Alias "RegOpenKeyExA" _
    (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, _
    ByVal samDesired As Long, hkResult As Long) As Long

Private Declare Function RegQueryValueEx Lib "advapi32" Alias "RegQueryValueExA" _
    (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, _
    ByRef lpType As Long, szData As Any, ByRef lpcbData As Long) As Long

Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" _
    (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, _
    lpcbName As Long, lpReserved As Any, lpClass As Any, lpcbClass As Any, _
    lpftLastWriteTime As FILETIME) As Long
    
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" _
    (ByVal hKey As Long, ByVal lpSubKey As String) As Long

Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As Long