The documentation doesn't say it's allowed, but the WIndows SDK allow it since 
22000 and
the Windows App Certification as well. It is not restricted to Win11 in both
cases. It's even allowed for 8.1 in api-ms-win-core-registry-l1-1-0.dll.
---
 mingw-w64-headers/include/winreg.h | 92 ++++++++++++++++--------------
 1 file changed, 49 insertions(+), 43 deletions(-)

diff --git a/mingw-w64-headers/include/winreg.h 
b/mingw-w64-headers/include/winreg.h
index dab9324e8..6c5743a28 100644
--- a/mingw-w64-headers/include/winreg.h
+++ b/mingw-w64-headers/include/winreg.h
@@ -131,31 +131,20 @@ extern "C" {
 #define RegConnectRegistry __MINGW_NAME_AW(RegConnectRegistry)
 #define RegConnectRegistryEx __MINGW_NAME_AW(RegConnectRegistryEx)
 #define RegCreateKey __MINGW_NAME_AW(RegCreateKey)
-#define RegCreateKeyEx __MINGW_NAME_AW(RegCreateKeyEx)
 #define RegDeleteKey __MINGW_NAME_AW(RegDeleteKey)
-#define RegDeleteKeyEx __MINGW_NAME_AW(RegDeleteKeyEx)
-#define RegDeleteValue __MINGW_NAME_AW(RegDeleteValue)
 #define RegEnumKey __MINGW_NAME_AW(RegEnumKey)
-#define RegEnumKeyEx __MINGW_NAME_AW(RegEnumKeyEx)
-#define RegEnumValue __MINGW_NAME_AW(RegEnumValue)
 #define RegLoadKey __MINGW_NAME_AW(RegLoadKey)
 #define RegOpenKey __MINGW_NAME_AW(RegOpenKey)
-#define RegOpenKeyEx __MINGW_NAME_AW(RegOpenKeyEx)
-#define RegQueryInfoKey __MINGW_NAME_AW(RegQueryInfoKey)
 #define RegQueryValue __MINGW_NAME_AW(RegQueryValue)
 #define RegQueryMultipleValues __MINGW_NAME_AW(RegQueryMultipleValues)
-#define RegQueryValueEx __MINGW_NAME_AW(RegQueryValueEx)
 #define RegReplaceKey __MINGW_NAME_AW(RegReplaceKey)
 #define RegRestoreKey __MINGW_NAME_AW(RegRestoreKey)
 #define RegSaveKey __MINGW_NAME_AW(RegSaveKey)
 #define RegSetValue __MINGW_NAME_AW(RegSetValue)
-#define RegSetValueEx __MINGW_NAME_AW(RegSetValueEx)
 #define RegUnLoadKey __MINGW_NAME_AW(RegUnLoadKey)
-#define RegGetValue __MINGW_NAME_AW(RegGetValue)
 #define InitiateSystemShutdown __MINGW_NAME_AW(InitiateSystemShutdown)
 #define AbortSystemShutdown __MINGW_NAME_AW(AbortSystemShutdown)
 
-  WINADVAPI LONG WINAPI RegCloseKey(HKEY hKey);
   WINADVAPI LONG WINAPI RegOverridePredefKey(HKEY hKey,HKEY hNewHKey);
   WINADVAPI LONG WINAPI RegOpenUserClassesRoot(HANDLE hToken,DWORD 
dwOptions,REGSAM samDesired,PHKEY phkResult);
   WINADVAPI LONG WINAPI RegOpenCurrentUser(REGSAM samDesired,PHKEY phkResult);
@@ -167,40 +156,23 @@ extern "C" {
   WINADVAPI LONG WINAPI RegConnectRegistryExW(LPCWSTR lpMachineName,HKEY 
hKey,ULONG Flags,PHKEY phkResult);
   WINADVAPI LONG WINAPI RegCreateKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY 
phkResult);
   WINADVAPI LONG WINAPI RegCreateKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY 
phkResult);
-  WINADVAPI LONG WINAPI RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD 
Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES 
lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
-  WINADVAPI LONG WINAPI RegCreateKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD 
Reserved,LPWSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES 
lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
   WINADVAPI LONG WINAPI RegDeleteKeyA(HKEY hKey,LPCSTR lpSubKey);
   WINADVAPI LONG WINAPI RegDeleteKeyW(HKEY hKey,LPCWSTR lpSubKey);
-  WINADVAPI LONG WINAPI RegDeleteKeyExA(HKEY hKey,LPCSTR lpSubKey,REGSAM 
samDesired,DWORD Reserved);
-  WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY hKey,LPCWSTR lpSubKey,REGSAM 
samDesired,DWORD Reserved);
   WINADVAPI LONG WINAPI RegDisableReflectionKey(HKEY hBase);
   WINADVAPI LONG WINAPI RegEnableReflectionKey(HKEY hBase);
   WINADVAPI LONG WINAPI RegQueryReflectionKey(HKEY hBase,WINBOOL 
*bIsReflectionDisabled);
-  WINADVAPI LONG WINAPI RegDeleteValueA(HKEY hKey,LPCSTR lpValueName);
-  WINADVAPI LONG WINAPI RegDeleteValueW(HKEY hKey,LPCWSTR lpValueName);
   WINADVAPI LONG WINAPI RegEnumKeyA(HKEY hKey,DWORD dwIndex,LPSTR lpName,DWORD 
cchName);
   WINADVAPI LONG WINAPI RegEnumKeyW(HKEY hKey,DWORD dwIndex,LPWSTR 
lpName,DWORD cchName);
-  WINADVAPI LONG WINAPI RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR 
lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD 
lpcchClass,PFILETIME lpftLastWriteTime);
-  WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY hKey,DWORD dwIndex,LPWSTR 
lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR lpClass,LPDWORD 
lpcchClass,PFILETIME lpftLastWriteTime);
-  WINADVAPI LONG WINAPI RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR 
lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE 
lpData,LPDWORD lpcbData);
-  WINADVAPI LONG WINAPI RegEnumValueW(HKEY hKey,DWORD dwIndex,LPWSTR 
lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE 
lpData,LPDWORD lpcbData);
   WINADVAPI LONG WINAPI RegFlushKey(HKEY hKey);
   WINADVAPI LONG WINAPI RegGetKeySecurity(HKEY hKey,SECURITY_INFORMATION 
SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,LPDWORD 
lpcbSecurityDescriptor);
   WINADVAPI LONG WINAPI RegLoadKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR lpFile);
   WINADVAPI LONG WINAPI RegLoadKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR lpFile);
-  WINADVAPI LONG WINAPI RegNotifyChangeKeyValue(HKEY hKey,WINBOOL 
bWatchSubtree,DWORD dwNotifyFilter,HANDLE hEvent,WINBOOL fAsynchronous);
   WINADVAPI LONG WINAPI RegOpenKeyA(HKEY hKey,LPCSTR lpSubKey,PHKEY phkResult);
   WINADVAPI LONG WINAPI RegOpenKeyW(HKEY hKey,LPCWSTR lpSubKey,PHKEY 
phkResult);
-  WINADVAPI LONG WINAPI RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD 
ulOptions,REGSAM samDesired,PHKEY phkResult);
-  WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD 
ulOptions,REGSAM samDesired,PHKEY phkResult);
-  WINADVAPI LONG WINAPI RegQueryInfoKeyA(HKEY hKey,LPSTR lpClass,LPDWORD 
lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD 
lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD 
lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD 
lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
-  WINADVAPI LONG WINAPI RegQueryInfoKeyW(HKEY hKey,LPWSTR lpClass,LPDWORD 
lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD 
lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD 
lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD 
lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
   WINADVAPI LONG WINAPI RegQueryValueA(HKEY hKey,LPCSTR lpSubKey,LPSTR 
lpData,PLONG lpcbData);
   WINADVAPI LONG WINAPI RegQueryValueW(HKEY hKey,LPCWSTR lpSubKey,LPWSTR 
lpData,PLONG lpcbData);
   WINADVAPI LONG WINAPI RegQueryMultipleValuesA(HKEY hKey,PVALENTA 
val_list,DWORD num_vals,LPSTR lpValueBuf,LPDWORD ldwTotsize);
   WINADVAPI LONG WINAPI RegQueryMultipleValuesW(HKEY hKey,PVALENTW 
val_list,DWORD num_vals,LPWSTR lpValueBuf,LPDWORD ldwTotsize);
-  WINADVAPI LONG WINAPI RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD 
lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
-  WINADVAPI LONG WINAPI RegQueryValueExW(HKEY hKey,LPCWSTR lpValueName,LPDWORD 
lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
   WINADVAPI LONG WINAPI RegReplaceKeyA(HKEY hKey,LPCSTR lpSubKey,LPCSTR 
lpNewFile,LPCSTR lpOldFile);
   WINADVAPI LONG WINAPI RegReplaceKeyW(HKEY hKey,LPCWSTR lpSubKey,LPCWSTR 
lpNewFile,LPCWSTR lpOldFile);
   WINADVAPI LONG WINAPI RegRestoreKeyA(HKEY hKey,LPCSTR lpFile,DWORD dwFlags);
@@ -210,12 +182,8 @@ extern "C" {
   WINADVAPI LONG WINAPI RegSetKeySecurity(HKEY hKey,SECURITY_INFORMATION 
SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
   WINADVAPI LONG WINAPI RegSetValueA(HKEY hKey,LPCSTR lpSubKey,DWORD 
dwType,LPCSTR lpData,DWORD cbData);
   WINADVAPI LONG WINAPI RegSetValueW(HKEY hKey,LPCWSTR lpSubKey,DWORD 
dwType,LPCWSTR lpData,DWORD cbData);
-  WINADVAPI LONG WINAPI RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD 
Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
-  WINADVAPI LONG WINAPI RegSetValueExW(HKEY hKey,LPCWSTR lpValueName,DWORD 
Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
   WINADVAPI LONG WINAPI RegUnLoadKeyA(HKEY hKey,LPCSTR lpSubKey);
   WINADVAPI LONG WINAPI RegUnLoadKeyW(HKEY hKey,LPCWSTR lpSubKey);
-  WINADVAPI LONG WINAPI RegGetValueA(HKEY hkey,LPCSTR lpSubKey,LPCSTR 
lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
-  WINADVAPI LONG WINAPI RegGetValueW(HKEY hkey,LPCWSTR lpSubKey,LPCWSTR 
lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
   WINADVAPI WINBOOL WINAPI InitiateSystemShutdownA(LPSTR lpMachineName,LPSTR 
lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL 
bRebootAfterShutdown);
   WINADVAPI WINBOOL WINAPI InitiateSystemShutdownW(LPWSTR lpMachineName,LPWSTR 
lpMessage,DWORD dwTimeout,WINBOOL bForceAppsClosed,WINBOOL 
bRebootAfterShutdown);
   WINADVAPI WINBOOL WINAPI AbortSystemShutdownA(LPSTR lpMachineName);
@@ -320,17 +288,6 @@ WINADVAPI LONG WINAPI RegDeleteKeyValueW(
   LPCWSTR lpValueName
 );
 
-#define RegDeleteTree __MINGW_NAME_AW(RegDeleteTree)
-WINADVAPI LONG WINAPI RegDeleteTreeA(
-  HKEY hKey,
-  LPCSTR lpSubKey
-);
-
-WINADVAPI LONG WINAPI RegDeleteTreeW(
-  HKEY hKey,
-  LPCWSTR lpSubKey
-);
-
 WINADVAPI LONG WINAPI RegLoadAppKeyA(
   LPCSTR lpFile,
   PHKEY phkResult,
@@ -442,6 +399,55 @@ WINADVAPI DWORD WINAPI CheckForHiberboot(
 
 #endif /* WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) */
 
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 
0x0603
+  WINADVAPI LONG WINAPI RegCloseKey(HKEY hKey);
+  WINADVAPI LONG WINAPI RegCreateKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD 
Reserved,LPSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES 
lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
+  WINADVAPI LONG WINAPI RegCreateKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD 
Reserved,LPWSTR lpClass,DWORD dwOptions,REGSAM samDesired,LPSECURITY_ATTRIBUTES 
lpSecurityAttributes,PHKEY phkResult,LPDWORD lpdwDisposition);
+  WINADVAPI LONG WINAPI RegDeleteKeyExA(HKEY hKey,LPCSTR lpSubKey,REGSAM 
samDesired,DWORD Reserved);
+  WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY hKey,LPCWSTR lpSubKey,REGSAM 
samDesired,DWORD Reserved);
+  WINADVAPI LONG WINAPI RegDeleteValueA(HKEY hKey,LPCSTR lpValueName);
+  WINADVAPI LONG WINAPI RegDeleteValueW(HKEY hKey,LPCWSTR lpValueName);
+  WINADVAPI LONG WINAPI RegEnumKeyExA(HKEY hKey,DWORD dwIndex,LPSTR 
lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPSTR lpClass,LPDWORD 
lpcchClass,PFILETIME lpftLastWriteTime);
+  WINADVAPI LONG WINAPI RegEnumKeyExW(HKEY hKey,DWORD dwIndex,LPWSTR 
lpName,LPDWORD lpcchName,LPDWORD lpReserved,LPWSTR lpClass,LPDWORD 
lpcchClass,PFILETIME lpftLastWriteTime);
+  WINADVAPI LONG WINAPI RegEnumValueA(HKEY hKey,DWORD dwIndex,LPSTR 
lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE 
lpData,LPDWORD lpcbData);
+  WINADVAPI LONG WINAPI RegEnumValueW(HKEY hKey,DWORD dwIndex,LPWSTR 
lpValueName,LPDWORD lpcchValueName,LPDWORD lpReserved,LPDWORD lpType,LPBYTE 
lpData,LPDWORD lpcbData);
+  WINADVAPI LONG WINAPI RegGetValueA(HKEY hkey,LPCSTR lpSubKey,LPCSTR 
lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
+  WINADVAPI LONG WINAPI RegGetValueW(HKEY hkey,LPCWSTR lpSubKey,LPCWSTR 
lpValue,DWORD dwFlags,LPDWORD pdwType,PVOID pvData,LPDWORD pcbData);
+  WINADVAPI LONG WINAPI RegNotifyChangeKeyValue(HKEY hKey,WINBOOL 
bWatchSubtree,DWORD dwNotifyFilter,HANDLE hEvent,WINBOOL fAsynchronous);
+  WINADVAPI LONG WINAPI RegOpenKeyExA(HKEY hKey,LPCSTR lpSubKey,DWORD 
ulOptions,REGSAM samDesired,PHKEY phkResult);
+  WINADVAPI LONG WINAPI RegOpenKeyExW(HKEY hKey,LPCWSTR lpSubKey,DWORD 
ulOptions,REGSAM samDesired,PHKEY phkResult);
+  WINADVAPI LONG WINAPI RegQueryInfoKeyA(HKEY hKey,LPSTR lpClass,LPDWORD 
lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD 
lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD 
lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD 
lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
+  WINADVAPI LONG WINAPI RegQueryInfoKeyW(HKEY hKey,LPWSTR lpClass,LPDWORD 
lpcchClass,LPDWORD lpReserved,LPDWORD lpcSubKeys,LPDWORD 
lpcbMaxSubKeyLen,LPDWORD lpcbMaxClassLen,LPDWORD lpcValues,LPDWORD 
lpcbMaxValueNameLen,LPDWORD lpcbMaxValueLen,LPDWORD 
lpcbSecurityDescriptor,PFILETIME lpftLastWriteTime);
+  WINADVAPI LONG WINAPI RegQueryValueExA(HKEY hKey,LPCSTR lpValueName,LPDWORD 
lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
+  WINADVAPI LONG WINAPI RegQueryValueExW(HKEY hKey,LPCWSTR lpValueName,LPDWORD 
lpReserved,LPDWORD lpType,LPBYTE lpData,LPDWORD lpcbData);
+  WINADVAPI LONG WINAPI RegSetValueExA(HKEY hKey,LPCSTR lpValueName,DWORD 
Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
+  WINADVAPI LONG WINAPI RegSetValueExW(HKEY hKey,LPCWSTR lpValueName,DWORD 
Reserved,DWORD dwType,CONST BYTE *lpData,DWORD cbData);
+#define RegCreateKeyEx __MINGW_NAME_AW(RegCreateKeyEx)
+#define RegDeleteKeyEx __MINGW_NAME_AW(RegDeleteKeyEx)
+#define RegDeleteValue __MINGW_NAME_AW(RegDeleteValue)
+#define RegEnumKeyEx __MINGW_NAME_AW(RegEnumKeyEx)
+#define RegEnumValue __MINGW_NAME_AW(RegEnumValue)
+#define RegGetValue __MINGW_NAME_AW(RegGetValue)
+#define RegOpenKeyEx __MINGW_NAME_AW(RegOpenKeyEx)
+#define RegQueryInfoKey __MINGW_NAME_AW(RegQueryInfoKey)
+#define RegQueryValueEx __MINGW_NAME_AW(RegQueryValueEx)
+#define RegSetValueEx __MINGW_NAME_AW(RegSetValueEx)
+#endif
+
+#if _WIN32_WINNT >= 0x0600 && (WINAPI_FAMILY_PARTITION 
(WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= 0x0603)
+WINADVAPI LONG WINAPI RegDeleteTreeA(
+  HKEY hKey,
+  LPCSTR lpSubKey
+);
+
+WINADVAPI LONG WINAPI RegDeleteTreeW(
+  HKEY hKey,
+  LPCWSTR lpSubKey
+);
+
+#define RegDeleteTree __MINGW_NAME_AW(RegDeleteTree)
+#endif
+
 #ifdef __cplusplus
 }
 #endif
-- 
2.39.2



_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to