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: * [Register file types under Windows] shows how to choose a file extension and assign it to your application. * [Windows: getting desktop properties] shows how to get the attributes of the system desktop so that your app's look and feel can be configured to match. ---- [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]