Если вы хотите постоянно устанавливать переменную среды, вы можете вставить новое значение в реестр. Например, с VBScript добавьте путь «C: \ Test» в переменной пути
Set WshShell = WScript.CreateObject("WScript.Shell")
strReg = "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path"
strSetting = WshShell.RegRead(strReg)
strNewSetting = strSetting&";c\test"
WshShell.RegWrite strReg, strNewSetting
Итак, если вы используете Python или другие языки, вы можете сделать то же самое, используя собственные API / модули вашего языка для чтения и записи реестра
Использовать класс Environment следующим образом:
Environment.SetEnvironmentVariable("foo", "bar");
Программически модифицировать переменные окружения можно только на время работы программы. Не слышали о том, чтобы на самом деле модифицировать окружение в масштабе всей системы и сделать его эффективным там и далее. Я не думаю, что это можно сделать, для этого потребуется копаться в привилегированном уровне и, возможно, шутить с системой ядра, чтобы достичь этого.
Даже при Unix, это не может быть сделано, несмотря на некоторые взломы, чтобы достичь этого. Я помню, как видел код, который на самом деле изменял переменные окружения под MSDOS, изменяя структуру данных окружения _psp в MSDOS, но это была однозадачная система и 16-битная без всякой защиты.
Подводя итог, я не думаю, что вы можете, и было бы неразумно делать это, это могло бы быть воспринято, как будто система находится под угрозой "трояна" или "вируса", в результате попытки сделать это, а не только, что мне, как пользователю, не хотелось бы, чтобы программа изменяла системную переменную окружения без моего согласия! Конечно, программа может писать в реестр, чтобы сделать его постоянным, но мне всё же хотелось бы знать, для чего она предназначена и почему.
В C# создается постоянная переменная окружения:
Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);