Мне нужно установить переменную среды программно.
Microsoft предоставляет документацию для этого здесь< /а>. Вам просто нужно создать новое значение в реестре под HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
. Эта часть работает нормально.
Проблема в том, что эти изменения вступают в силу только после выхода из системы и повторного входа в нее.
Чтобы обойти это, они предлагают выполнить этот небольшой фрагмент кода:
if (!SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
(LPARAM) "Environment", SMTO_ABORTIFHUNG,
5000, &dwReturnValue))
{
... take action in case of failure
}
Я сделал именно так, SendMessageTimeout
возвращает TRUE
, но по крайней мере под Windows 10 это не действует. Недавно открытое окно командной строки по-прежнему не будет отображать вновь созданную переменную.
Я также пытался запустить этот фрагмент кода в процессе с повышенными правами, но результат все тот же.
Но когда я использую системный апплет для изменения переменных среды, появляется моя вновь созданная переменная, и когда я нажимаю «ОК» в апплете и когда я открываю другую командную строку, переменная появляется.
Есть предположения?