使用Python修改注册表, 需要使用Win32 Extensions for Python,
该项目的网址如下:
http://sourceforge.net/project/platformdownload.php?group_id=78018
http://starship.python.net/crew/mhammond/win32/Downloads.html
网上google了一下,<<征服Python:语言基础与典型应用>>第10章有有python win32api的一个讲解.
下面是网上一个可读的链接:10.1 访问Windows注册表
我写了一个修改环境变量的例子:
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:
(很多开源软件的的安装器都实现了环境变量立即生效的功能, 可以参照一下).
SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,LPARAM("Environment"), SMTO_ABORTIFHUNG, 5000, &MsgResult);
恩, 先到这里, 和微软打交道还是微软的好用啊~