def setSystemEnvironment(keyName,keyValue):
"""set the windows system environment.
"""
# open the position where system stores system environment.
pathInReg = 'SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment'
#pathInReg = 'SYSTEM\\ControlSet001\\Control\\Session Manager\\Environment'
key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,pathInReg,0,win32con.KEY_ALL_ACCESS)
win32api.RegSetValueEx(key,keyName,0,win32con.REG_SZ,keyValue)
win32api.RegCloseKey(key)
if __name__ == "__main__":
setSystemEnvironment('jason999','Value123')
测试了一下, 这个代码修改注册表嗷嗷好用, 但是该值没有立即反应到环境变量中,
google了一下"windows 注册表 环境变量 立即生效"
原来环境变量的值虽然反映到注册表中, 但是因没有触发Windows去读这个注册表,
所以要想让该值在环境变量中立即生效需要采用以下方法中的一种:
a. 重启
b. 邮件我的电脑->高级->环境变量->直接点击确定按钮
(此时会去发windows去读注册表,可以拿AutoHotKey录个脚本)
c. 使用其他工具或语言发送注册表变化消息WM_SETTINGCHANGE:
(很多开源软件的的安装器都实现了环境变量立即生效的功能, 可以参照一下).