Click here to Skip to main content
16,015,594 members
Articles / Desktop Programming / MFC

Import/Export Registry Sections as XML

Rate me:
Please Sign up or sign in to vote.
4.33/5 (16 votes)
21 Jan 20033 min read 174K   6.1K   73   30
Export registry sections as XML to simplify registry diffs
This article details a tool aimed to import/export registry sections in XML format, to make registry diff easier in practice.

Exporting registry sections as XML to simplify registry diffs

Exporting registry sections as XML to simplify registry diffs

1. Why XML?

Although anyone can use the built-in .reg registry export format from regedit, that one is not exactly suited for readability and performing diffs. That's why I decided to come up with a fast-sketched XML format to play with.

The hierarchical nature of XML content, in addition to Xml diff tools[^] already available to us makes it an ideal format to work with.

In addition, modern diff tools like Araxis[^] (commercial product) can be used anytime you want your work done finished fast and with strong software.

2. Using this Tool

2.1 Exporting as XML

It should be easy to use since basically it mimics the good ol' regedit UI. It would have been smarter to plug the XML exporter inside regedit, but as far as I know the source code for regedit is not redistributed, I had to rewrite a significant portion of regedit just to make sure I don't end up with a cmdline tool, which would have certainly offended some people out there.

You can select one or more key sections, just like with any multiple selection tree ctrl.

Right-click to export them to the XML format.

When only one registry section is exported at a time, a default output XML filename is suggested.

The export process may be quite lengthy in time, of course. But no serious guy would export the whole registry, wouldn't you ? At any moment, you may hold the ESCAPE key to abort.

When completed, the resulting standard XML is automatically open in MSIE.

2.2 Importing from XML

Importing XML sections to the registry is just as easy. Just select the appropriate menu Option from the File menu. Message boxes will occur whenever the XML file contains syntax error(s), or if for any reason it wasn't possible to open/create/set a given key or value.

2.3 A Simple Export/Import Test Procedure

Let's just test it by following the steps below:

  • Launch the tool, and expand the HKEY_LOCAL_MACHINE \ System \ Setup key
  • Export it as XML, by leaving the default name Setup.xml
  • Once the export is finished, IE opens the resulting XML file. Close it.
  • In any text editor, open this file, and lookup the keyname Setup
  • Replace the keyname with SetupF, so to fake a new key
  • Taking the tool back, select Import from XML... and load Setup.xml
  • Once the import is finished, press F5 to refresh the tree
  • Expand the key again, and look for the new SetupF key, values and subkeys

3. The XML Format

Let's take an example, if you export the HKEY_LOCAL_MACHINE\SYSTEM\Setup key, pictured here:

Exporting the HKEY_LOCAL_MACHINE\SYSTEM\Setup section

Exporting the HKEY_LOCAL_MACHINE\SYSTEM\Setup section

You'll get the standard XML below:

XML
<?xml version="1.0" encoding="UTF-8"?>
 <registry>
  <k name="HKEY_LOCAL_MACHINE">
   <k name="SYSTEM">
    <k name="Setup">
     <v name="CmdLine" value="setup -newsetup"/>
     <v name="OsLoaderPath" value="\"/>
     <v name="SetupType" value="0x00000000 (0)" type="REG_DWORD"/>
     <v name="SystemPartition" value="\Device\HarddiskVolume1"/>
     <v name="SystemPrefix" value="cf 03 00 00 00 a0 3d e0" type="REG_BINARY"/>
     <v name="SystemSetupInProgress" value="0x00000000 (0)" type="REG_DWORD"/>
     <k name="AllowStart">
      <k name="AFD"/>
      <k name="EventLog"/>
      <k name="PlugPlay"/>
      <k name="ProtectedStorage"/>
      <k name="Rpcss"/>
      <k name="SamSs"/>
      <k name="Seclogon"/>
      <k name="WS2IFSL"/>
     </k>
    </k>
   </k>
  </k>
 </registry>

I have created a straight forward XML format. k stands for key, and v for value. Values have a type attribute whenever it's not a string. The shared source code is not rocket science but there's a generic writer, and a generic reader, which you can easily reuse for your own needs.

Update History

  • 27th October, 2002: Code complete. Ability to export one or more registry sections
  • 8th November, 2002: Ability to import registry sections as well
  • 22nd January, 2003: Export routine made much faster (x5 approximately), based on User feedback

License

This article has no explicit license attached to it, but may contain usage terms in the article text or the download files themselves. If in doubt, please contact the author via the discussion board below.

A list of licenses authors might use can be found here.


Written By
France France
Addicted to reverse engineering. At work, I am developing business intelligence software in a team of smart people (independent software vendor).

Need a fast Excel generation component? Try xlsgen.

Comments and Discussions

 
QuestionExport Pin
Member 1078795924-Mar-15 21:41
Member 1078795924-Mar-15 21:41 
AnswerRe: Export Pin
Member 115878168-Apr-15 3:44
Member 115878168-Apr-15 3:44 
QuestionAny change to enhance this with a CLI function? Pin
Niteowls4-Oct-14 4:28
Niteowls4-Oct-14 4:28 
QuestionCLI? Pin
Member 996742018-Dec-13 6:20
Member 996742018-Dec-13 6:20 
GeneralUnicode Version Pin
vipin_nvk21-Dec-08 3:24
vipin_nvk21-Dec-08 3:24 
QuestionAny plans to update for XP/Vista? Pin
vcor9-Aug-07 15:30
vcor9-Aug-07 15:30 
GeneralYes it works! Pin
displayAlias24-Dec-04 18:12
displayAlias24-Dec-04 18:12 
QuestionOk.... how about Unicode support?? Pin
sysop@HAL9K.com11-Nov-04 7:21
sysop@HAL9K.com11-Nov-04 7:21 
AnswerRe: Ok.... how about Unicode support?? Pin
Dieguito30-Dec-04 1:25
Dieguito30-Dec-04 1:25 
AnswerRe: Ok.... how about Unicode support?? Pin
nagadravid3-Dec-08 17:52
nagadravid3-Dec-08 17:52 
GeneralAnother use...!!!! Pin
potterdl6-Aug-04 7:30
potterdl6-Aug-04 7:30 
GeneralExport reg sections without MFC Pin
gonx28-Mar-03 0:08
gonx28-Mar-03 0:08 
GeneralRe: Export reg sections without MFC Pin
Stephane Rodriguez.28-Mar-03 2:12
Stephane Rodriguez.28-Mar-03 2:12 
GeneralRe: Export reg sections without MFC Pin
gonx28-Mar-03 16:10
gonx28-Mar-03 16:10 
GeneralRe: Export reg sections without MFC Pin
Stephane Rodriguez.28-Mar-03 18:34
Stephane Rodriguez.28-Mar-03 18:34 
GeneralRe: Export reg sections without MFC Pin
sysop@HAL9K.com12-Nov-04 8:16
sysop@HAL9K.com12-Nov-04 8:16 
QuestionError? Pin
Kant23-Jan-03 7:07
Kant23-Jan-03 7:07 
Questionwhy is so slow ? Pin
sahn022-Jan-03 4:44
sahn022-Jan-03 4:44 
AnswerRe: why is so slow ? Pin
Kant23-Jan-03 6:23
Kant23-Jan-03 6:23 
GeneralRe: why is so slow ? Pin
Stephane Rodriguez.23-Jan-03 6:45
Stephane Rodriguez.23-Jan-03 6:45 
GeneralGreat Code! Pin
Dieter Buecherl12-Nov-02 7:00
Dieter Buecherl12-Nov-02 7:00 
QuestionWhat about Import Tool Pin
Rama Krishna Vavilala28-Oct-02 3:09
Rama Krishna Vavilala28-Oct-02 3:09 
AnswerRe: What about Import Tool Pin
Obliterator30-Oct-02 4:58
Obliterator30-Oct-02 4:58 
GeneralRe: What about Import Tool Pin
Obliterator30-Oct-02 6:44
Obliterator30-Oct-02 6:44 
GeneralOptional value attribute to the k element Pin
Anders Dalvander27-Oct-02 22:49
Anders Dalvander27-Oct-02 22:49 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.