Index: Include/api_reg.sbp
===================================================================
--- Include/api_reg.sbp	(revision 172)
+++ Include/api_reg.sbp	(revision 281)
@@ -8,6 +8,10 @@
 #ifdef UNICODE
 Const _FuncName_RegConnectRegistry = "RegConnectRegistryW"
+Const _FuncName_RegConnectRegistryEx = "RegConnectRegistryExW"
 Const _FuncName_RegCreateKeyEx = "RegCreateKeyExW"
+Const _FuncName_RegCreateKeyTransacted = "RegCreateKeyTransactedW"
 Const _FuncName_RegDeleteKey = "RegDeleteKeyW"
+Const _FuncName_RegDeleteKeyEx = "RegDeleteKeyExW"
+Const _FuncName_RegDeleteKeyTransacted = "RegDeleteKeyTransactedW"
 Const _FuncName_RegDeleteValue = "RegDeleteValueW"
 Const _FuncName_RegEnumKeyEx = "RegEnumKeyExW"
@@ -15,15 +19,29 @@
 Const _FuncName_RegLoadKey = "RegLoadKeyW"
 Const _FuncName_RegOpenKeyEx = "RegOpenKeyExW"
+Const _FuncName_RegOpenKeyTransacted = "RegOpenKeyTransactedW"
 Const _FuncName_RegQueryInfoKey = "RegQueryInfoKeyW"
 Const _FuncName_RegQueryMultipleValues = "RegQueryMultipleValuesW"
 Const _FuncName_RegQueryValueEx = "RegQueryValueExW"
 Const _FuncName_RegReplaceKey = "RegReplaceKeyW"
+Const _FuncName_RegRestoreKey = "RegRestoreKeyW"
 Const _FuncName_RegSaveKey = "RegSaveKeyW"
 Const _FuncName_RegSetValueEx = "RegSetValueExW"
 Const _FuncName_RegUnLoadKey = "RegUnLoadKeyW"
+Const _FuncName_RegDeleteKeyValue = "RegDeleteKeyValueW"
+Const _FuncName_RegSetKeyValue = "RegSetKeyValueW"
+Const _FuncName_RegDeleteTree = "RegDeleteTreeW"
+Const _FuncName_RegCopyTree = "RegCopyTreeW"
+Const _FuncName_RegGetValue = "RegGetValueW"
+Const _FuncName_RegLoadMUIString = "RegLoadMUIStringW"
+Const _FuncName_RegLoadAppKey = "RegLoadAppKeyW"
+Const _FuncName_RegSaveKeyEx = "RegSaveKeyExW"
 #else
 Const _FuncName_RegConnectRegistry = "RegConnectRegistryA"
+Const _FuncName_RegConnectRegistryEx = "RegConnectRegistryExA"
 Const _FuncName_RegCreateKeyEx = "RegCreateKeyExA"
+Const _FuncName_RegCreateKeyTransacted = "RegCreateKeyTransactedA"
 Const _FuncName_RegDeleteKey = "RegDeleteKeyA"
+Const _FuncName_RegDeleteKeyEx = "RegDeleteKeyExA"
+Const _FuncName_RegDeleteKeyTransacted = "RegDeleteKeyTransactedA"
 Const _FuncName_RegDeleteValue = "RegDeleteValueA"
 Const _FuncName_RegEnumKeyEx = "RegEnumKeyExA"
@@ -31,12 +49,24 @@
 Const _FuncName_RegLoadKey = "RegLoadKeyA"
 Const _FuncName_RegOpenKeyEx = "RegOpenKeyExA"
+Const _FuncName_RegOpenKeyTransacted = "RegOpenKeyTransactedA"
 Const _FuncName_RegQueryInfoKey = "RegQueryInfoKeyA"
 Const _FuncName_RegQueryMultipleValues = "RegQueryMultipleValuesA"
 Const _FuncName_RegQueryValueEx = "RegQueryValueExA"
 Const _FuncName_RegReplaceKey = "RegReplaceKeyA"
+Const _FuncName_RegRestoreKey = "RegRestoreKeyA"
 Const _FuncName_RegSaveKey = "RegSaveKeyA"
 Const _FuncName_RegSetValueEx = "RegSetValueExA"
 Const _FuncName_RegUnLoadKey = "RegUnLoadKeyA"
+Const _FuncName_RegDeleteKeyValue = "RegDeleteKeyValueA"
+Const _FuncName_RegSetKeyValue = "RegSetKeyValueA"
+Const _FuncName_RegDeleteTree = "RegDeleteTreeA"
+Const _FuncName_RegCopyTree = "RegCopyTreeA"
+Const _FuncName_RegGetValue = "RegGetValueA"
+Const _FuncName_RegLoadMUIString = "RegLoadMUIStringA"
+Const _FuncName_RegLoadAppKey = "RegLoadAppKeyA"
+Const _FuncName_RegSaveKeyEx = "RegSaveKeyExA"
 #endif
+
+TypeDef REGSAM = Long 'ACCESS_MASK
 
 ' Reserved Key Handles
@@ -48,4 +78,6 @@
 Const HKEY_CURRENT_CONFIG =   ((&H80000005 As Long) As ULONG_PTR) As HKEY
 Const HKEY_DYN_DATA =         ((&H80000006 As Long) As ULONG_PTR) As HKEY
+
+Const REG_SECURE_CONNECTION = 1
 
 Type VALENTW
@@ -67,25 +99,69 @@
 TypeDef VALENT = VALENTA
 #endif
-
 '------------------------
 ' Registry API Functions
 
 Declare Function RegCloseKey Lib "advapi32" (hKey As HKEY) As Long
+'#if WINVER >= 0x0500 'AB
+Declare Function RegOverridePredefKey Lib "advapi32" (hKey As HKEY, hNewKey As HKEY) As Long
+Declare Function RegOpenUserClassesRoot Lib "advapi32" (hToken As HANDLE, dwOptions As DWord, samDesired As REGSAM, ByRef hkResult As HKEY) As Long
+Declare Function RegOpenCurrentUser Lib "advapi32" (samDesired As REGSAM, ByRef hkResult As HKEY) As Long
+Declare Function RegDisablePredefinedCache Lib "advapi32" () As Long
+Declare Function RegDisablePredefinedCacheEx Lib "advapi32" () As Long
+'#endif
 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 RegConnectRegistryEx Lib "advapi32" Alias _FuncName_RegConnectRegistryEx (lpMachineName As LPCTSTR, hKey As HKEY, Flags As DWord, 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 REGSAM, lpSecurityAttributes As *SECURITY_ATTRIBUTES, ByRef phkResult As HKEY, lpdwDisposition As *DWord) As Long
+'#if WINVER >= 0x0600 'AB
+Declare Function RegCreateKeyTransacted Lib "advapi32" Alias _FuncName_RegCreateKeyTransacted (hKey As HKEY, lpSubKey As LPCTSTR, Reserved As DWord, lpClass As LPTSTR, dwOptions As DWord, samDesired As REGSAM, lpSecurityAttributes As *SECURITY_ATTRIBUTES, ByRef phkResult As HKEY, lpdwDisposition As *DWord, hTransaction As HANDLE, pExtendedParemeter As VoidPtr) As Long
+'#endif
 Declare Function RegDeleteKey Lib "advapi32" Alias _FuncName_RegDeleteKey (hKey As HKEY, lpSubKey As PCTSTR) As Long
+'#if WINVER >= 0x0520 'AB
+Declare Function RegDeleteKeyEx Lib "advapi32" Alias _FuncName_RegDeleteKeyEx (hKey As HKEY, lpSubKey As LPCTSTR, samDesired As REGSAM, Reserved As DWord) As Long
+'#endif
+'#if WINVER >= 0x0600 'AB
+Declare Function RegDeleteKeyTransacted Lib "advapi32" Alias _FuncName_RegDeleteKeyTransacted (hKey As HKEY, lpSubKey As LPCTSTR, samDesired As REGSAM, Reserved As DWord, hTransaction As HANDLE, pExtendedParameter As VoidPtr) As Long
+'#endif
+'#if WINVER >= 0x0520 'AB
+Declare Function RegDisableReflectionKey Lib "advapi32" (hBase As HKEY) As Long
+Declare Function RegEnableReflectionKey Lib "advapi32" (hBase As HKEY) As Long
+Declare Function RegQueryReflectionKey Lib "advapi32" (hBase As HKEY, ByRef bIsReflectionDisabled As BOOL) As Long
+'#endif
 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 RegFlushKey Lib "advapi32" (hKey As HKEY) As Long
+'#if _WIN32_WINNT >= &h0310 'AB
+Declare Function RegGetKeySecurity Lib "advapi32"(hKey As HKEY, SecurityInformation As SECURITY_INFORMATION, pSecurityDescriptor As *SECURITY_DESCRIPTOR, ByRef lpcbSecurityDescriptor As DWord) As Long
+'#endif
 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
+'#if WINVER >= 0x0600 'AB
+Declare Function RegOpenKeyTransacted Lib "advapi32" Alias _FuncName_RegOpenKeyTransacted (hKey As HKEY, lpSubKey As LPCTSTR, ulOptions As DWord, samDesired As REGSAM, ByRef phkResult As HKEY, hTransaction As HANDLE, pExtendedParemeter As VoidPtr) As Long
+'#endif
 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 RegReplaceKey Lib "advapi32" Alias _FuncName_RegReplaceKey (hKey As HKEY, lpSubKey As LPCTSTR, lpNewFile As LPCTSTR, lpOldFile As LPCTSTR) As Long
+'#if _WIN32_WINNT >= &h0310 'AB
+Declare Function RegRestoreKey Lib "advapi32" Alias _FuncName_RegRestoreKey (hKey As HKEY, lpFile As LPCTSTR, dwFlags As DWord) As Long
+'#endif
 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
+'#if _WIN32_WINNT >= &h0310 'AB
+Declare Function RegSetKeySecurity Lib "advapi32" (hKey As HKEY, SecurityInformation As SECURITY_INFORMATION, pSecurityDescriptor As *SECURITY_DESCRIPTOR) AS Long
+'#endif
+Declare Function RegSetValueEx Lib "advapi32" Alias _FuncName_RegSetValueEx (hKey As HKEY, lpValueName As LPCTSTR, 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, lpSubKey As LPCTSTR) As Long
-
+'#if _WIN32_WINNT >= &h0600
+Declare Function RegDeleteKeyValue Lib "advapi32" Alias _FuncName_RegDeleteKeyValue (hKey As HKEY, lpSubKey As LPCTSTR, lpValueName As LPCTSTR) As Long
+Declare Function RegSetKeyValue Lib "advapi32" Alias _FuncName_RegSetKeyValue (hKey As HKEY, lpSubKey As LPCTSTR, lpValueName As LPCTSTR, dwType As DWord, lpData As VoidPtr, cbData As DWord) As Long
+Declare Function RegDeleteTree Lib "advapi32" Alias _FuncName_RegDeleteTree (hKey As HKEY, lpSubKey As LPCTSTR) As Long
+Declare Function RegCopyTree Lib "advapi32" Alias _FuncName_RegCopyTree (hKeySrc As HKEY, lpSubKey As LPCTSTR, hKeyDest As HKEY) As Long
+Declare Function RegGetValue Lib "advapi32" Alias _FuncName_RegGetValue (hKey As HKEY, lpSubKey As LPCTSTR, lpValue As LPCTSTR, dwFlags As DWord, pdwType As *DWord, pvData As VoidPtr, pcbData As *DWord) As Long
+Declare Function RegLoadMUIString Lib "advapi32" Alias _FuncName_RegLoadMUIString (hKey As HKEY, pszValue As LPCTSTR, pszOutBuf As LPTSTR, cbOutBuf As DWord, pcbData As *DWord, Flags As DWord, pszDirectory As LPCTSTR) As Long
+Declare Function RegLoadAppKey Lib "advapi32" Alias _FuncName_RegLoadAppKey (lpFile As LPCTSTR, ByRef hkResult As HKEY, samDesired As REGSAM, dwOptions As DWord, Reserved As DWord) As Long
+'#endif
+'#if WINVER >= 0x0510 'AB
+Declare Function RegSaveKeyEx Lib "advapi32" Alias _FuncName_RegSaveKeyEx (hKey As HKEY, lpFile As LPCTSTR, lpSecurityAttributes As *SECURITY_ATTRIBUTES, Flags As DWord) As Long
+'#endif
 #endif '_INC_REG
