Установка переменной среды с помощью WMI не работает, пока мы не перейдем к переменным среды и не нажмем ОК - PullRequest
0 голосов
/ 22 ноября 2011

Вот контекст.Мы используем наше приложение для установки многих параметров с помощью WMI, включая переменные среды.

Мы используем этот код (упрощенно) для установки переменной среды

ManagementClass envClass = new ManagementClass(this.oConnector.Scope, new ManagementPath(WMIHelper.Win32Environment), null);
ManagementObject mo = envClass.CreateInstance();
mo["Name"] = variable;
mo["UserName"] = user;
mo["VariableValue"] = value.Trim();
mo.Put();

Теперь, когда мы открываем командную строку, мыне вижу значение переменной среды.Если я захожу и открываю свойства компьютера и захожу на страницу Переменные среды, это там.Я дважды нажимаю кнопку ОК, снова открываю командную строку, и вдруг появляется переменная.

Кто-нибудь знает, почему это происходит?Это похоже на то, как будто после помещения переменной окружения мы должны сделать что-то еще для принудительного обновления или что-то в этом роде.

Спасибо

1 Ответ

0 голосов
/ 22 ноября 2011

Вы уверены, что запускаете процесс, который читает переменные окружения после их установки?

Параметры env копируются при запуске процесса, и любые изменения в переменных env системы после запуска процесса никогда не будут видны процессу. AFAIK, нет способа обойти это поведение. Открывая новое окно cmd, вы запускаете новый процесс cmd.exe, который получает новые значения переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...