Free the mouse Replay ConfigurationRegistry
Home | Changes | Index | Search | Go

Overview

The ConfigurationRegistry is a centralized storage spot for relatively small low-security configuration items; large complicated items (like the list of channels, stored programs, or schedule recordings) are stored in separate files, and a few high-security items such as the unit serial number and the username & password used for PPP dialups, are kept in the FlashData storage area.

The registry can be viewed as a tree, much like a hierarchical filesystem: a key is analogous to a directory; it is either a rootkey or it has a parent key; it has a name; it can contain children, both key and val. A val is analogous to a file (but is much smaller); it is contained inside a key, it has a name, it has a type, and it has a value.

Logical Format

There are three rootkeys, keys which have no parents: Hardware, SysConfig and Software. The Hardware tree appears to be static; early in the setup process, a copy of the Gaea or Plymouth Hardware tree is made (See GaeaVsPlymouth?). The SysConfig and Software trees are much more dynamic. The division between SysConfig and Software doesn't actually appear to be very clear.

When a registry item is referred to in a format like SysConfig/Tweak/DisableSoftwareDownload, that actually means the DisableSoftwareDownload val inside the Tweak key inside the SysConfig rootkey.

On-Disk format

The registry is stored on disk in the user/Registry directory, with one file per rootkey -- gaea.reg, software.reg and sysconfig.reg. The files are XML; for example (contrived, to show the full range of observed formats):
<?xml version="1.0" standalone="yes"?>
<registry rootkey="SysConfig">
 <key name="NetworkUpdateTime">                                    
  <key name="DeviceIdentity">                                                    
   <val name="UniqueID" type="binary">00000000000000000000000000000001</val>     
  </key>                                                                         
  <val name="OpenUpdateWindowSecond" type="value32">7200</val>                  
  <val name="CloseUpdateWindowSecond" type="value32">21600</val>                
  <val name="RetryDelaySeconds" type="value32">900</val>                        
  <val name="Anytime" type="value32">1</val>                                    
  <val name="Weights" type="string">3600,10;3600,15;3600,40;3600,35;</val>      
 </key>                                                                         
</registry>
The DeviceIdentity key isn't actually a child of the NetworkUpdateTime child, and there are quite a few more children of the SysConfig rootkey.

Parenthesised format

In some settings, a parenthesised format is used instead of the XML. A whole tree is enclosed in parenthesis, and each key is represented by its name followed by a parenthesised representation of its tree. Inside a tree, val names and values are each enclosed in single quotes, with a character between them representing type (S for string, N for value32 (number), B for binary); child key trees come after any val entries. There is no whitespace used at all, outside string values. Inside string values, single quotes or backslashes are backslash-escaped.

The rootkey shown above would be represented as shown below, except whitespace has been added to help visibility; the root of the tree itself is not named in this representation, it must be known some other way.

(
 NetworkUpdateTime (
  'OpenUpdateWindowSecond' N '7200'
  'CloseUpdateWindowSecond' N '21600'
  'RetryDelaySeconds' N '900'
  'Anytime' N '1'
  'Weights' S '3600,10;3600,15;3600,40;3600,35;'
  Device Identity (
    'UniqueID' B '00000000000000000000000000000001'
  )
)

This form is used for the RnsShellCommands request and to generate & check the signatures in the SysConfig/ AuthCtl registry key.

Altering

You can read and write the files with extract_rtv, and edit them with any text editor. Be careful, of course, and keep backups.

If you have PtvioShell access, you can use the regedit command:

Usage: regedit show    "keyname"
       regedit showall "keyname"
       regedit create  "keyname"
       regedit delete  "keyname" [valuename]
       regedit setstr  "keyname" "valuename" "string"
       regedit setval  "keyname" "valuename" value
       regedit save    "keyname" "filename"
       regedit load    "keyname" "filename"
       regedit init
       regedit flush

Samples

The sample registry files attached are slightly edited -- a few values have been replaced with =X=s.

-- ToddLarason - 10 Jul 2002


Your post will appear before this form in chronological order (newest at bottom)

Attachment: Action: Size: Date: Who: Comment:
gaea.reg.txt action 6221 10 Jul 2002 - 09:53 ToddLarason  
software.reg.txt action 8517 10 Jul 2002 - 09:53 ToddLarason  
sysconfig.reg.txt action 8733 10 Jul 2002 - 09:54 ToddLarason  

Topic ConfigurationRegistry . { Edit | Attach | Ref-By | Printable | Diffs | r1.3 | > | r1.2 | > | r1.1 | More }
Revision r1.3 - 14 Jul 2003 - 18:53 GMT - TWikiGuest

Copyright © 2001 by the contributing authors. All material on this collaboration tool is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback.