Version 6 of registry

Updated 2002-01-23 11:36:17

Purpose: collect tips, techniques, and suggestions for making careful use of the Windows registry extension

http://www.purl.org/tcl/home/man/tcl8.4/TclCmd/registry.htm


Windows Registry Browser is an example of use of the registry extension.


There's more at Microsoft Windows and Tk. Among the most interesting:


Chin Huang offers an example: "this Tcl script lists the programmatic identifier (ProgID) of all COM classes that have a ProgID.

      package require registry

      set classesRootKey "HKEY_CLASSES_ROOT\\CLSID"
      foreach clsid [registry keys $classesRootKey] {
          set clsidKey "$classesRootKey\\$clsid"
          set progIdSubKey [registry keys $clsidKey "VersionIndependentProgID"]
          if {[llength $progIdSubKey] > 0} {
              set progId [registry get "$clsidKey\\$progIdSubKey" ""]
              puts $progId
          }
      }

"


Tom Wilkason wrote in the comp.lang.tcl newsgroup:

Below is what I do to set system env variables on Win2K (need admin priv for system variables). Note, you generally have to logout for them to take effect.

 ;##
 ;# Set a user Env variable, may have to logout first
 ;#
 proc setUserEnv {key value} {
   package require registry
   global env
   if {[catch {
      registry set "HKEY_CURRENT_USER\\Environment" $key $value
   } result]} {
     puts stderr "$result"
   }
   set env($key) $value
 }
 ;##
 ;# Set a system wide Env variable, if fails set the user env variable  instead
 ;#
 proc setSysEnv {key value} {
   package require registry
   global env
   if {[catch {
      registry set "HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment" $key $value
      registry set "HKEY_LOCAL_MACHINE\\SYSTEM\\ControlSet002\\Control\\Session Manager\\Environment" $key $value
      registry set "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment" $key $value
   } result]} {
     registry set "HKEY_CURRENT_USER\\Environment" $key
     puts stderr "$result"
   } else {
     catch {registry delete "HKEY_CURRENT_USER\\Environment" $key}
   }
   set env($key) $value
 }




















Back to Tcl core extension syntax. Tcl syntax help - Category Command