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

问题描述 投票:0回答:1

我正致力于通过 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")
python windows environment-variables sendmessage
1个回答
0
投票

广播消息只通知正在监听该消息的Windows应用程序,例如Desktop进程。环境通常从父进程继承,不会改变,除非current process改变它,比如监听广播消息和更新自己的环境。

© www.soinside.com 2019 - 2024. All rights reserved.