addSingle
это метод
this.toastService.addSingle();
Проблема не в вашем коде, а в выполнении процесса. Полные системные переменные назначаются выполняемому процессу. Итак, ваш дочерний процесс также имел такой же набор переменных.
Ваш пример кода работает хорошо. Он добавляет переменную в среду SYSTEM.
Итак, вам нужно установить переменную не только для вашей системы, но и для вашего процесса.
Вот код.
var oShell = WScript.CreateObject("WScript.Shell");
var oSysEnv = oShell.Environment("SYSTEM");
oSysEnv("TEST1") = "TEST_VALUE";
var oSysEnv = oShell.Environment("PROCESS");
oSysEnv("TEST1") = "TEST_VALUE";
oExec = oShell.Run("envtest.bat", 1, true);
После того, как вы создали системную переменную.
] Он назначит вновь созданную переменную для текущего процесса. Итак, ваш дочерний процесс может получить эту переменную во время выполнения команды «SET».
Извините за мой плохой английский.
Вы получаете системные переменные окружения. Я подозреваю, что у вас просто нет разрешения изменять их; Вы можете попробовать изменить это на переменные среды пользователя.
Также я не знаю, учитывается ли регистр аргумента Environment ()
или нет. В документации MS используется «Система»
вместо «СИСТЕМА»
. Может иметь значение, но я точно не знаю.
Есть 4 «коллекции» (система, пользователь, изменчивый и процесс), который вам, вероятно, понадобится Process, если вам просто нужен дочерний процесс для просмотра переменной