July 2002
Intermediate to advanced
608 pages
15h 46m
English
Credit: Wolfgang Strobl
You need to check and/or set
system-environment variables on Windows NT (or 2000 or XP) via the
registry, not in the transient way supported by
os.environ.
Many Windows system-administration
tasks boil down to working with the Windows registry, so the
_winreg module, part of the Python core, often
plays a crucial role in such scripts. This recipe reads all the
system-environment variables, then modifies one of them, accessing
the registry for both tasks:
import _winreg
x = _winreg.ConnectRegistry(None, _winreg.HKEY_LOCAL_MACHINE)
y = _winreg.OpenKey(x,
r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment")
print "System Environment variables are:"
print "#", "name", "value", "type"
for i in range(1000):
try:
n, v, t = _winreg.EnumValue(y, i)
print i, n, v, t
except EnvironmentError:
print "You have", i, "System Environment variables"
break
path = _winreg.QueryValueEx(y, "path")[0]
print "Your PATH was:", path
_winreg.CloseKey(y)
# Reopen Environment key for writing
y = _winreg.OpenKey(x,
r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment",
0, _winreg.KEY_ALL_ACCESS)
# Now append C:\ to the path as an example of environment change
_winreg.SetValueEx(y, "path", 0, _winreg.REG_EXPAND_SZ, path+";C:\\")
_winreg.CloseKey(y)
_winreg.CloseKey(x)Python’s normal access to the environment, via
os.environ, is transient: it deals with only the environment of this process, ...