TIP 362: Simple 32 and 64 bit Registry Support

Login
Bounty program for improvements to Tcl and certain Tcl packages.
Author:         Damon Courtney <damon@tclhome.com>
Author:         Kevin Kenny <kevin.b.kenny@gmail.com>
State:          Final
Type:           Project
Vote:           Done
Created:        01-Mar-2010
Post-History:   
Keywords:       Windows,Tcl
Tcl-Version:    8.6

Abstract

Add new options to the registry command on Windows to allow it to specify that the action should be taken specifically on the 32 or 64 bit registry.

Rationale

When Microsoft created a 64 bit version of Windows they had this idea of separating certain areas of the registry into a new node for 32 bit programs to access. The idea was that 64 bit programs would use the standard keys while 32 bit programs living in the 64 bit world would have their registry access shuffled off to a separate node behind their backs. By default, a 32 bit program will get the 32 bit registry node and a 64 bit program will get the 64 bit nodes, and in Tcl, this is what we're currently left to. It is possible to specify which registry you want to use through flags to the various registry commands, Tcl's registry command just doesn't know anything about them currently.

Specification

The registry command will receive two new (mutually exclusive) options to specify that the given registry command should be executed against the 32 bit or 64 bit registry. The proposed implementation is the addition of a -32bit and a -64bit option, one of which may be placed before the subcommand like so:

package require registry 1.3

registry ?-32bit|-64bit? subcommand ?options?

By default, no option will mean that the registry command does what it has always done, which is to operate on the registry that matches the current compiled version of the running Tcl. Specifying -32bit means to operate on the 32 bit registry regardless of the current binary, and -64bit means to operate on the 64 bit registry. The options will be supported by all subcommands of registry.

Concurrently with this change, the version number of the registry package will be advanced to 1.3.

Reference Implementation

See Patch #2960976 at SourceForge https://sourceforge.net/support/tracker.php?aid=2960976 .

Copyright

This document has been placed in the public domain.

History