设置系统环境变量后向系统广播更改



我正在通过Python向Windows添加系统环境变量。

我尝试通过Python库。它能够添加系统环境变量;但是,程序不能识别新添加的系统环境变量。我以admin Python代码运行,并在添加系统环境变量后重启PC。

我想我没有广播新添加的系统环境变量。因此,我使用了"SendMessage"将新添加的变量广播到系统。

然而,它并没有真正起作用。

我使用了"编辑环境变量"在Windows上手动添加系统变量。它是工作和程序识别新的系统环境变量。但是,下面的代码确实在系统环境变量部分添加了变量。但由于某些原因,程序无法识别。

我不确定我错过了什么,有人知道我错过了什么吗?谢谢!

def set_system_env(name, value):
path = r'SYSTEMCurrentControlSetControlSession ManagerEnvironment'
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进程。环境通常是从父进程继承的,除非当前进程改变它,例如监听广播消息和更新自己的环境,否则环境不会改变。