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