Программно переменные среды modifiy?

  • Windows 7.
  • Это для моей собственной машины, таким образом, не имеет значения, если это требует прав администратора или чего-то.
  • Предпочтительно в Python или.NET, но я могу изучить немного Win32 (C/C++) программирование, если это необходимо.
19
задан Javier 23 January 2010 в 02:14
поделиться

4 ответа

Если вы хотите постоянно устанавливать переменную среды, вы можете вставить новое значение в реестр. Например, с 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 / модули вашего языка для чтения и записи реестра

21
ответ дан 30 November 2019 в 03:29
поделиться

Использовать класс Environment следующим образом:

Environment.SetEnvironmentVariable("foo", "bar");
2
ответ дан 30 November 2019 в 03:29
поделиться

Программически модифицировать переменные окружения можно только на время работы программы. Не слышали о том, чтобы на самом деле модифицировать окружение в масштабе всей системы и сделать его эффективным там и далее. Я не думаю, что это можно сделать, для этого потребуется копаться в привилегированном уровне и, возможно, шутить с системой ядра, чтобы достичь этого.

Даже при Unix, это не может быть сделано, несмотря на некоторые взломы, чтобы достичь этого. Я помню, как видел код, который на самом деле изменял переменные окружения под MSDOS, изменяя структуру данных окружения _psp в MSDOS, но это была однозадачная система и 16-битная без всякой защиты.

Подводя итог, я не думаю, что вы можете, и было бы неразумно делать это, это могло бы быть воспринято, как будто система находится под угрозой "трояна" или "вируса", в результате попытки сделать это, а не только, что мне, как пользователю, не хотелось бы, чтобы программа изменяла системную переменную окружения без моего согласия! Конечно, программа может писать в реестр, чтобы сделать его постоянным, но мне всё же хотелось бы знать, для чего она предназначена и почему.

-3
ответ дан 30 November 2019 в 03:29
поделиться

В C# создается постоянная переменная окружения:

Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);
8
ответ дан 30 November 2019 в 03:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: