Как обновить копию системных переменных (environment variable)?
При запуске .exe не явно делается копия всех env vars. Для примера, есть системная переменная MY_ENV_VAR_FOO = hello и мой .exe использует эту переменную. Но скажем, нам нужно поменять значение этой переменной на MY_ENV_VAR_FOO = hello word (не закрывая наш .exe).
В чем проблема? .exe имеет копию системных переменных и он ничего не знает о том, что какое то из значений было изменено.
Для того, чтоб .exe принял новые значения нужно его переоткрыть. Это можно сделать по разному, как один из примеров можно просто закрыть и открыть его заново вручную или (у меня так) с помощью скрипта который закроет и откроет его заново. Мой .exe имеет логику которая знает как запустить этот скрипт который сделает перезагрузку .exe.
Я написал этот скрипт потому, что у меня нет прямого доступа к .exe и я хочу, чтоб он сам перезагружался(так как есть эта логика).
Скрипт такой
set MY_TARGET=C:\My_program
taskkill /IM My_program.exe /F
@echo off
if %errorlevel% NEQ 0 echo ERROR!!! & goto :exit
@echo on
timeout 10
start "" %MY_TARGET%\My_program.exe
:exit
Скрипт закрывает .exe и через 10 сек открывает его заново.
После его выполнения выглядит все так, мы обновили системную переменную, запустился скрипт, закрыл .exe, открыл его заново через 10 сек. и вроде как все в порядке.
Но проблема в том, что каждый новый запущеный процесс берет копию системных переменных из процесса который его запускает.
Как я говорил выше .exe имеет логику которая запускает скрипт который перегружает .exe и что получается, обновили переменную .exe ничего не знает об этом обновлении и хранит копию переменных до того как было обновление, запускает скрипт, скрипт берет копию переменных того процесса который его запустил (наш .exe, копия которая не обновленная), закрывает .exe и через 10 сек запускает его заново, при запуске .exe берет копию процесса который его запустил (то есть скрипт который имеет не обновленную копию) и в итоге вновь открывшейся .exe имеет туже копию переменных с которыми он закрылся. То есть ничего не обновилось.
Вопрос - можно ли как то обновить копию системных переменных? Может есть что то вроде refresh_env_vars_command команда, которую нужно добавить в скрипт между закрытием .exe и его открытием заново?