summaryrefslogtreecommitdiff
path: root/examples/Registry
diff options
context:
space:
mode:
authorirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-29 06:56:17 +0000
committerirfan <irfan@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>1996-10-29 06:56:17 +0000
commit1d10be0da172c415a8cb0c641d79b6b4bf0a0eb6 (patch)
treefb602f0e222db85d18facffc981a535df1836a2c /examples/Registry
parent32c6d18662a87c0a906b1b98547663a3e63687a2 (diff)
downloadATCD-1d10be0da172c415a8cb0c641d79b6b4bf0a0eb6.tar.gz
test programs for ACE Registry
Diffstat (limited to 'examples/Registry')
-rw-r--r--examples/Registry/test_registry_iterator.cpp130
-rw-r--r--examples/Registry/test_registry_iterator.mak195
-rw-r--r--examples/Registry/test_registry_iterator.mdpbin0 -> 36864 bytes
-rw-r--r--examples/Registry/test_registry_update.cpp145
-rw-r--r--examples/Registry/test_registry_update.mak195
-rw-r--r--examples/Registry/test_registry_update.mdpbin0 -> 37376 bytes
6 files changed, 665 insertions, 0 deletions
diff --git a/examples/Registry/test_registry_iterator.cpp b/examples/Registry/test_registry_iterator.cpp
new file mode 100644
index 00000000000..c7d578f7171
--- /dev/null
+++ b/examples/Registry/test_registry_iterator.cpp
@@ -0,0 +1,130 @@
+// This example uses the ACE_Registry class to iterator through the
+// entries in the predefined registries. The host of iteration can be
+// varied through argv[1]. If no host is specified the local host is
+// used. This is very similar to how regedt32 starts up.
+//
+// This examples points the cool iterators in ACE_Registry
+
+
+#include "ace/Registry.h"
+#include "ace/Log_Msg.h"
+
+// Indentation while printing names
+static const u_long INDENTATION_LEVEL = 3;
+
+// Prototypes
+static int print_naming_context (ACE_Registry::Naming_Context &naming_context,
+ u_long indentation);
+static void print_object (const ACE_Registry::Istring &name,
+ u_long indentation);
+static void print_context (ACE_Registry::Naming_Context &parent,
+ const ACE_Registry::Istring &name,
+ u_long indentation);
+static void indent (u_long indentation);
+
+int
+main (int argc, char *argv[])
+{
+ int result;
+ ACE_Registry::Naming_Context naming_context;
+
+ // Connect to a predefined naming context
+ result = ACE_Predefined_Naming_Contexts::connect (naming_context,
+ HKEY_LOCAL_MACHINE,
+ // HKEY_CLASSES_ROOT,
+ // HKEY_USERS,
+ // HKEY_CURRENT_USER,
+ argc == 2 ? argv[1] : 0);
+
+ if (result != 0)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Predefined_Naming_Contexts::connect failed"), -1);
+
+ // Print contents of naming context
+ result = ::print_naming_context (naming_context, 0);
+ if (result != 0)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "print_naming_context failed"), -1);
+
+ return 0;
+}
+
+
+// Print contents of <naming_context>
+static int
+print_naming_context (ACE_Registry::Naming_Context &naming_context,
+ u_long indentation)
+{
+ ACE_Registry::Binding_List list;
+
+ // Get the list of all entries
+ int result = naming_context.list (list);
+ if (result != 0)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Registry::Naming_Context::list"), -1);
+
+ // Iterator through all entries
+ for (ACE_Registry::Binding_List::iterator i = list.begin ();
+ i != list.end ();
+ i++)
+ {
+ // Yeeesss! STL rules!
+ ACE_Registry::Binding &binding = *i;
+
+ if (binding.type () == ACE_Registry::OBJECT)
+ // If object
+ ::print_object (binding.name (),
+ indentation);
+ else
+ // If context
+ ::print_context (naming_context,
+ binding.name (),
+ indentation);
+ }
+ return 0;
+}
+
+
+// Print an object with <name>
+static void
+print_object (const ACE_Registry::Istring &name,
+ u_long indentation)
+{
+ // Set indentation
+ ::indent (indentation);
+ cout << name << endl;
+}
+
+
+// Print an context with <name> and <parent>
+static void
+print_context (ACE_Registry::Naming_Context &parent,
+ const ACE_Registry::Istring &name,
+ u_long indentation)
+{
+ // Set indentation
+ indent (indentation);
+ cout << name << endl;
+
+ ACE_Registry::Naming_Context child_context;
+ // Find child context
+ int result = parent.resolve_context (name,
+ child_context,
+ KEY_READ);
+ if (result != 0)
+ ACE_ERROR ((LM_ERROR, "%s %s\n", "ACE_Registry::Naming_Context::resolve_context failed for:", name.c_str ()));
+ else
+ {
+ // Print contents of the child
+ result = ::print_naming_context (child_context,
+ indentation + INDENTATION_LEVEL);
+ if (result != 0)
+ ACE_ERROR ((LM_ERROR, "%p\n", "print_naming_context failed"));
+ }
+}
+
+
+// Pretty formating
+static void
+indent (u_long indentation)
+{
+ for (; indentation > 0; indentation--)
+ cout << " ";
+}
diff --git a/examples/Registry/test_registry_iterator.mak b/examples/Registry/test_registry_iterator.mak
new file mode 100644
index 00000000000..7a55ae4c82f
--- /dev/null
+++ b/examples/Registry/test_registry_iterator.mak
@@ -0,0 +1,195 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 4.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+!IF "$(CFG)" == ""
+CFG=test_registry_iterator - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to test_registry_iterator -\
+ Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "test_registry_iterator - Win32 Release" && "$(CFG)" !=\
+ "test_registry_iterator - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "test_registry_iterator.mak"\
+ CFG="test_registry_iterator - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "test_registry_iterator - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "test_registry_iterator - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+# PROP Target_Last_Scanned "test_registry_iterator - Win32 Debug"
+RSC=rc.exe
+CPP=cl.exe
+
+!IF "$(CFG)" == "test_registry_iterator - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+OUTDIR=.
+INTDIR=.
+
+ALL : "$(OUTDIR)\test_registry_iterator.exe"
+
+CLEAN :
+ -@erase ".\test_registry_iterator.exe"
+ -@erase ".\test_registry_iterator.obj"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /GX /O2 /I ".." /I " ..\stl" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MDd /W3 /GX /O2 /I ".." /I " ..\stl" /D "WIN32" /D "NDEBUG"\
+ /D "_CONSOLE" /Fp"test_registry_iterator.pch" /YX /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/test_registry_iterator.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib c:\users\irfan\registry\ace\debug\registry.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=ace.lib c:\users\irfan\registry\ace\debug\registry.lib\
+ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib\
+ shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo\
+ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/test_registry_iterator.pdb"\
+ /machine:I386 /out:"$(OUTDIR)/test_registry_iterator.exe"
+LINK32_OBJS= \
+ "$(INTDIR)/test_registry_iterator.obj"
+
+"$(OUTDIR)\test_registry_iterator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "test_registry_iterator - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+OUTDIR=.
+INTDIR=.
+
+ALL : "$(OUTDIR)\test_registry_iterator.exe"
+
+CLEAN :
+ -@erase ".\vc40.pdb"
+ -@erase ".\vc40.idb"
+ -@erase ".\test_registry_iterator.exe"
+ -@erase ".\test_registry_iterator.obj"
+ -@erase ".\test_registry_iterator.ilk"
+ -@erase ".\test_registry_iterator.pdb"
+
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I ".." /I " ..\stl" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I ".." /I " ..\stl" /D "WIN32" /D\
+ "_DEBUG" /D "_CONSOLE" /Fp"test_registry_iterator.pch" /YX /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/test_registry_iterator.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 ace.lib c:\users\irfan\registry\ace\debug\registry.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+LINK32_FLAGS=ace.lib c:\users\irfan\registry\ace\debug\registry.lib\
+ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib\
+ shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo\
+ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/test_registry_iterator.pdb"\
+ /debug /machine:I386 /out:"$(OUTDIR)/test_registry_iterator.exe"
+LINK32_OBJS= \
+ "$(INTDIR)/test_registry_iterator.obj"
+
+"$(OUTDIR)\test_registry_iterator.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "test_registry_iterator - Win32 Release"
+# Name "test_registry_iterator - Win32 Debug"
+
+!IF "$(CFG)" == "test_registry_iterator - Win32 Release"
+
+!ELSEIF "$(CFG)" == "test_registry_iterator - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=.\test_registry_iterator.cpp
+DEP_CPP_TEST_=\
+ ".\..\ace/Registry.h"\
+ {$(INCLUDE)}"\ace\Log_Msg.h"\
+ {$(INCLUDE)}"\ace\OS.h"\
+ {$(INCLUDE)}"\bstring.h"\
+ {$(INCLUDE)}"\ace\Time_Value.h"\
+ {$(INCLUDE)}"\sys\TYPES.H"\
+ {$(INCLUDE)}"\sys\STAT.H"\
+ {$(INCLUDE)}"\sys\TIMEB.H"\
+ {$(INCLUDE)}"\ace\Trace.h"\
+ {$(INCLUDE)}"\ace\OS.i"\
+ {$(INCLUDE)}"\ace\config.h"\
+ {$(INCLUDE)}"\ace\Time_Value.i"\
+ {$(INCLUDE)}"\ace\Log_Record.h"\
+ {$(INCLUDE)}"\ace\ACE.h"\
+ {$(INCLUDE)}"\ace\Log_Priority.h"\
+ {$(INCLUDE)}"\ace\Log_Record.i"\
+ {$(INCLUDE)}"\ace\ACE.i"\
+
+NODEP_CPP_TEST_=\
+ ".\..\..\stl\msdev\mutex.h"\
+
+
+"$(INTDIR)\test_registry_iterator.obj" : $(SOURCE) $(DEP_CPP_TEST_) "$(INTDIR)"
+
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/examples/Registry/test_registry_iterator.mdp b/examples/Registry/test_registry_iterator.mdp
new file mode 100644
index 00000000000..cdcde91d7e2
--- /dev/null
+++ b/examples/Registry/test_registry_iterator.mdp
Binary files differ
diff --git a/examples/Registry/test_registry_update.cpp b/examples/Registry/test_registry_update.cpp
new file mode 100644
index 00000000000..7c3612f2daa
--- /dev/null
+++ b/examples/Registry/test_registry_update.cpp
@@ -0,0 +1,145 @@
+// Suppose this application belonged to AcmeSoft. AcmeSoft wants to
+// keep track of the number of times this application is
+// executed. They want two counters: one counts the number of
+// executions per machine, the other keeps track of the number of
+// executions per user.
+//
+// This application uses the ACE_Registry class to create and update
+// entries in the LOCAL_MACHINE and CURRENT_USER predefined registries
+// to store the counters.
+//
+// Note that this application will not work with remote registries
+// if used with the CURRENT_USER predefined registry.
+
+#include "ace/Registry.h"
+#include "ace/Log_Msg.h"
+
+// Name for application's naming context
+static ACE_Registry::Name application_context_name;
+
+// Name for instance counter.
+static ACE_Registry::Name counter_name;
+
+// Protypes
+static int update_counter (HKEY predefined,
+ u_long &current_counter);
+static void setup_names ();
+
+int
+main(int argc, char *argv[])
+{
+ int result;
+ u_long current_counter = 0;
+
+ // initialize name
+ setup_names ();
+
+ // Update counter per user
+ result = ::update_counter (HKEY_CURRENT_USER,
+ current_counter);
+ if (result == 0)
+ {
+ cout << "User counter: " << current_counter << endl;
+
+ // Update counter per machine
+ result = ::update_counter (HKEY_LOCAL_MACHINE,
+ current_counter);
+ if (result == 0)
+ cout << "Machine counter: " << current_counter << endl;
+ }
+
+ if (result != 0)
+ ACE_DEBUG ((LM_DEBUG, "test failed\n"));
+ else
+ ACE_DEBUG ((LM_DEBUG, "test succeeded\n"));
+
+ return 0;
+}
+
+static int
+update_counter (HKEY predefined,
+ u_long &current_counter)
+{
+ int result;
+ ACE_Registry::Naming_Context parent_context;
+ ACE_Registry::Naming_Context application_context;
+
+ // Connect to predefined entry
+ result = ACE_Predefined_Naming_Contexts::connect (parent_context,
+ predefined);
+ if (result != 0)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Predefined_Naming_Contexts::connect failed"), -1);
+
+ // Find application context name
+ result = parent_context.resolve_context (application_context_name,
+ application_context);
+
+ if (result != 0)
+ // Failed to find: create a new context
+ result = parent_context.bind_new_context (application_context_name,
+ application_context);
+
+ if (result != 0)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Registry::Naming_Contexts::bind/resolve_context failed"), -1);
+
+ // Counter
+ u_long counter = 0;
+ // Represent counter as an ACE_Registry::Object
+ ACE_Registry::Object object ((void *) &counter,
+ sizeof counter,
+ REG_DWORD);
+ // Find counter
+ result = application_context.resolve (counter_name,
+ object);
+
+ if (result != 0)
+ // Failed to find: create new binding for object
+ {
+ counter = 1;
+ result = application_context.bind (counter_name,
+ object);
+ }
+ else
+ // Counter was found
+ {
+ // increment counter
+ counter++;
+ // Update
+ result = application_context.rebind (counter_name,
+ object);
+ }
+
+ if (result != 0)
+ ACE_ERROR_RETURN ((LM_ERROR, "%p\n", "ACE_Registry::Naming_Contexts::bind/resolve failed"), -1);
+ else
+ current_counter = counter;
+
+ return 0;
+}
+
+
+static void
+setup_names ()
+{
+ // Stupid implementation of STL is broken
+ /*
+ ::application_context_name.reserve (4);
+ ::application_context_name [0].id_ = "Software";
+ ::application_context_name [1].id_ = "AcmeSoft";
+ ::application_context_name [2].id_ = "AcmeApplication";
+ ::application_context_name [3].id_ = "1.0";
+
+ ::counter_name.reserve (1);
+ ::counter_name [0].id_ = "Instance Counter";
+ */
+
+ ACE_Registry::Name_Component component;
+
+ component.id_ = "Software", ::application_context_name.push_back (component);
+ component.id_ = "AcmeSoft", ::application_context_name.push_back (component);
+ component.id_ = "AcmeApplication", ::application_context_name.push_back (component);
+ component.id_ = "1.0", ::application_context_name.push_back (component);
+
+ component.id_ = "Instance Counter", ::counter_name.push_back (component);
+}
+
diff --git a/examples/Registry/test_registry_update.mak b/examples/Registry/test_registry_update.mak
new file mode 100644
index 00000000000..f0e26c38643
--- /dev/null
+++ b/examples/Registry/test_registry_update.mak
@@ -0,0 +1,195 @@
+# Microsoft Developer Studio Generated NMAKE File, Format Version 4.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+!IF "$(CFG)" == ""
+CFG=test_registry_update - Win32 Debug
+!MESSAGE No configuration specified. Defaulting to test_registry_update -\
+ Win32 Debug.
+!ENDIF
+
+!IF "$(CFG)" != "test_registry_update - Win32 Release" && "$(CFG)" !=\
+ "test_registry_update - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE on this makefile
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "test_registry_update.mak"\
+ CFG="test_registry_update - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "test_registry_update - Win32 Release" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE "test_registry_update - Win32 Debug" (based on\
+ "Win32 (x86) Console Application")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+################################################################################
+# Begin Project
+# PROP Target_Last_Scanned "test_registry_update - Win32 Debug"
+RSC=rc.exe
+CPP=cl.exe
+
+!IF "$(CFG)" == "test_registry_update - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+OUTDIR=.
+INTDIR=.
+
+ALL : "$(OUTDIR)\test_registry_update.exe"
+
+CLEAN :
+ -@erase ".\test_registry_update.exe"
+ -@erase ".\test_registry_update.obj"
+
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /GX /O2 /I ".." /I " ..\stl" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MDd /W3 /GX /O2 /I ".." /I " ..\stl" /D "WIN32" /D "NDEBUG"\
+ /D "_CONSOLE" /Fp"test_registry_update.pch" /YX /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/test_registry_update.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ace.lib c:\users\irfan\registry\ace\debug\registry.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+LINK32_FLAGS=ace.lib c:\users\irfan\registry\ace\debug\registry.lib\
+ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib\
+ shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo\
+ /subsystem:console /incremental:no /pdb:"$(OUTDIR)/test_registry_update.pdb"\
+ /machine:I386 /out:"$(OUTDIR)/test_registry_update.exe"
+LINK32_OBJS= \
+ "$(INTDIR)/test_registry_update.obj"
+
+"$(OUTDIR)\test_registry_update.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "test_registry_update - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+OUTDIR=.
+INTDIR=.
+
+ALL : "$(OUTDIR)\test_registry_update.exe"
+
+CLEAN :
+ -@erase ".\vc40.pdb"
+ -@erase ".\vc40.idb"
+ -@erase ".\test_registry_update.exe"
+ -@erase ".\test_registry_update.obj"
+ -@erase ".\test_registry_update.ilk"
+ -@erase ".\test_registry_update.pdb"
+
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I ".." /I " ..\stl" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I ".." /I " ..\stl" /D "WIN32" /D\
+ "_DEBUG" /D "_CONSOLE" /Fp"test_registry_update.pch" /YX /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+BSC32_FLAGS=/nologo /o"$(OUTDIR)/test_registry_update.bsc"
+BSC32_SBRS=
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 ace.lib c:\users\irfan\registry\ace\debug\registry.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
+LINK32_FLAGS=ace.lib c:\users\irfan\registry\ace\debug\registry.lib\
+ kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib\
+ shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo\
+ /subsystem:console /incremental:yes /pdb:"$(OUTDIR)/test_registry_update.pdb"\
+ /debug /machine:I386 /out:"$(OUTDIR)/test_registry_update.exe"
+LINK32_OBJS= \
+ "$(INTDIR)/test_registry_update.obj"
+
+"$(OUTDIR)\test_registry_update.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+.c.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx.obj:
+ $(CPP) $(CPP_PROJ) $<
+
+.c.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cpp.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+.cxx.sbr:
+ $(CPP) $(CPP_PROJ) $<
+
+################################################################################
+# Begin Target
+
+# Name "test_registry_update - Win32 Release"
+# Name "test_registry_update - Win32 Debug"
+
+!IF "$(CFG)" == "test_registry_update - Win32 Release"
+
+!ELSEIF "$(CFG)" == "test_registry_update - Win32 Debug"
+
+!ENDIF
+
+################################################################################
+# Begin Source File
+
+SOURCE=.\test_registry_update.cpp
+DEP_CPP_TEST_=\
+ ".\..\ace/Registry.h"\
+ {$(INCLUDE)}"\ace\Log_Msg.h"\
+ {$(INCLUDE)}"\ace\OS.h"\
+ {$(INCLUDE)}"\bstring.h"\
+ {$(INCLUDE)}"\ace\Time_Value.h"\
+ {$(INCLUDE)}"\sys\TYPES.H"\
+ {$(INCLUDE)}"\sys\STAT.H"\
+ {$(INCLUDE)}"\sys\TIMEB.H"\
+ {$(INCLUDE)}"\ace\Trace.h"\
+ {$(INCLUDE)}"\ace\OS.i"\
+ {$(INCLUDE)}"\ace\config.h"\
+ {$(INCLUDE)}"\ace\Time_Value.i"\
+ {$(INCLUDE)}"\ace\Log_Record.h"\
+ {$(INCLUDE)}"\ace\ACE.h"\
+ {$(INCLUDE)}"\ace\Log_Priority.h"\
+ {$(INCLUDE)}"\ace\Log_Record.i"\
+ {$(INCLUDE)}"\ace\ACE.i"\
+
+NODEP_CPP_TEST_=\
+ ".\..\..\stl\msdev\mutex.h"\
+
+
+"$(INTDIR)\test_registry_update.obj" : $(SOURCE) $(DEP_CPP_TEST_) "$(INTDIR)"
+
+
+# End Source File
+# End Target
+# End Project
+################################################################################
diff --git a/examples/Registry/test_registry_update.mdp b/examples/Registry/test_registry_update.mdp
new file mode 100644
index 00000000000..833aff9038d
--- /dev/null
+++ b/examples/Registry/test_registry_update.mdp
Binary files differ