我正致力于通过 Python 向 Windows 添加系统环境变量。
我尝试通过 Python 库。它能够添加系统环境变量;但是,程序无法识别新添加的系统环境变量。 我以管理员身份运行 Python 代码并在添加系统环境变量后重新启动 PC。
我以为我没有广播新添加的系统环境变量。因此,我使用“SendMessage”向系统广播新添加的变量。
然而,它并没有真正起作用。
我在windows上使用“编辑环境变量”来手动添加系统变量。它正在工作并且程序识别了新的系统环境变量。但是,下面的代码确实在系统环境变量部分添加了变量。但是由于某些原因程序无法识别。
我不确定我错过了什么。有人知道我错过了什么吗?
谢谢!
def set_system_env(name, value):
path = r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
hklm = ConnectRegistry(None, HKEY_LOCAL_MACHINE)
try:
key = OpenKey(hklm, path, 0, KEY_READ | KEY_WRITE)
except:
self.log("Error")
SetValueEx(key, name, 0, REG_EXPAND_SZ, value)
CloseKey(key)
broadcast_env_change()
def broadcast_env_change():
SendMessage(win32con.HWND_BROADCAST, win32con.WM_SETTINGCHANGE, 0, 'Environment')
def add_sys_val()
set_system_env("Test_PATH" , "C:\System_Folder")
广播消息只通知正在监听该消息的Windows应用程序,例如Desktop进程。环境通常从父进程继承,不会改变,除非current process改变它,比如监听广播消息和更新自己的环境。