summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ACE/ace/Configuration.cpp12
-rw-r--r--ACE/ace/Configuration.h8
2 files changed, 13 insertions, 7 deletions
diff --git a/ACE/ace/Configuration.cpp b/ACE/ace/Configuration.cpp
index 19628107866..e192028dfcd 100644
--- a/ACE/ace/Configuration.cpp
+++ b/ACE/ace/Configuration.cpp
@@ -458,7 +458,8 @@ ACE_Configuration_Win32Registry::operator!= (const ACE_Configuration_Win32Regist
return true;
}
-ACE_Configuration_Win32Registry::ACE_Configuration_Win32Registry (HKEY hKey)
+ACE_Configuration_Win32Registry::ACE_Configuration_Win32Registry (HKEY hKey, u_long security_access)
+ : security_access_ (security_access)
{
ACE_Section_Key_Win32 *temp = 0;
@@ -490,7 +491,7 @@ ACE_Configuration_Win32Registry::open_section (const ACE_Configuration_Section_K
if ((errnum = ACE_TEXT_RegOpenKeyEx (base_key,
sub_section,
0,
- KEY_ALL_ACCESS,
+ security_access_,
&result_key)) != ERROR_SUCCESS)
{
if (!create)
@@ -504,7 +505,7 @@ ACE_Configuration_Win32Registry::open_section (const ACE_Configuration_Section_K
0,
0,
REG_OPTION_NON_VOLATILE,
- KEY_ALL_ACCESS,
+ security_access_,
0,
&result_key,
(PDWORD) 0
@@ -979,7 +980,8 @@ ACE_Configuration_Win32Registry::load_key (const ACE_Configuration_Section_Key&
HKEY
ACE_Configuration_Win32Registry::resolve_key (HKEY hKey,
const ACE_TCHAR* path,
- int create)
+ int create,
+ u_long security_access)
{
HKEY result = 0;
// Make a copy of hKey
@@ -1030,7 +1032,7 @@ ACE_Configuration_Win32Registry::resolve_key (HKEY hKey,
0,
0,
0,
- KEY_ALL_ACCESS,
+ security_access,
0,
&subkey,
(PDWORD) 0
diff --git a/ACE/ace/Configuration.h b/ACE/ace/Configuration.h
index aa69ea49e65..0f1f1b896e5 100644
--- a/ACE/ace/Configuration.h
+++ b/ACE/ace/Configuration.h
@@ -453,7 +453,8 @@ public:
* base registry key to attach to. This class takes ownership of
* hKey, it will invoke <RegCloseKey> on it upon destruction.
*/
- explicit ACE_Configuration_Win32Registry (HKEY hKey);
+ explicit ACE_Configuration_Win32Registry (HKEY hKey,
+ u_long security_access = KEY_ALL_ACCESS);
/// Destructor
virtual ~ACE_Configuration_Win32Registry (void);
@@ -520,7 +521,8 @@ public:
*/
static HKEY resolve_key (HKEY hKey,
const ACE_TCHAR* path,
- int create = 1);
+ int create = 1,
+ u_long security_access = KEY_ALL_ACCESS);
virtual bool operator== (const ACE_Configuration_Win32Registry &rhs) const;
virtual bool operator!= (const ACE_Configuration_Win32Registry &rhs) const;
@@ -533,6 +535,8 @@ protected:
ACE_Configuration_Win32Registry (void);
ACE_Configuration_Win32Registry (const ACE_Configuration_Win32Registry& rhs);
ACE_Configuration_Win32Registry& operator= (const ACE_Configuration_Win32Registry& rhs);
+
+ const u_long security_access_;
};
#endif /* ACE_WIN32 && !ACE_LACKS_WIN32_REGISTRY */