summaryrefslogtreecommitdiff
path: root/ace/Configuration.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ace/Configuration.cpp')
-rw-r--r--ace/Configuration.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/ace/Configuration.cpp b/ace/Configuration.cpp
index 85d53eae0ef..87f46cee0ed 100644
--- a/ace/Configuration.cpp
+++ b/ace/Configuration.cpp
@@ -593,8 +593,36 @@ ACE_Configuration_Win32Registry::remove_section (const ACE_Configuration_Section
}
}
+#if (ACE_HAS_WINNT4 != 0)
if (ACE_TEXT_RegDeleteKey (base_key, sub_section) != ERROR_SUCCESS)
return -2;
+#else
+ if (!recursive)
+ {
+ ACE_Configuration_Section_Key section;
+ if (open_section (key, sub_section, 0, section))
+ return -2;
+
+ HKEY sub_key;
+ if (load_key (section, sub_key))
+ return -3;
+
+ ACE_TCHAR name_buffer[ACE_DEFAULT_BUFSIZE];
+ DWORD buffer_size = ACE_DEFAULT_BUFSIZE;
+ // Check for a an entry under the sub_key
+ if (ACE_TEXT_RegEnumKeyEx (sub_key,
+ 0,
+ name_buffer,
+ &buffer_size,
+ NULL,
+ NULL,
+ NULL,
+ NULL) == ERROR_SUCCESS)
+ return -2;
+ }
+ else if (ACE_TEXT_RegDeleteKey (base_key, sub_section) != ERROR_SUCCESS)
+ return -2;
+#endif
return 0;
}