У меня такая же проблема. Я "устанавливаю" инструмент и среду Python и создаю некоторые системные переменные в реестре. Для обновления реестра я делаю следующее:
def RefreshEnv():
HWND_BROADCAST = 0xFFFF
WM_SETTINGCHANGE = 0x1A
SMTO_ABORTIFHUNG = 0x0002
result = ctypes.c_long()
SendMessageTimeoutW = ctypes.windll.user32.SendMessageTimeoutW
SendMessageTimeoutW(HWND_BROADCAST, WM_SETTINGCHANGE, 0, u'Environment',
SMTO_ABORTIFHUNG, 5000, ctypes.byref(result))
Этот метод не обновляет реестр, как я ожидал. Мне все еще нужно открыть окно для редактирования системных переменных в Windows и просто нажать OK
, чтобы обновить их. В противном случае мои установленные инструменты вылетают с KeyError
при попытке перехватить переменные окружения.
Я не знаю, поможет ли вышеуказанная функция Refresh
(думаю, нет), но, по крайней мере, это попытка.