Подтвердить что ты не робот

Программно модифицировать переменные среды?

  • Windows 7.
  • Это для моей собственной машины, поэтому не имеет значения, нужны ли ей права администратора или что-то в этом роде.
  • Предпочтительно в Python или .NET, но я могу узнать немного программирования Win32 (C/С++), если это необходимо.
4b9b3361

Ответ 1

если вы хотите постоянно устанавливать переменную окружения, вы можете вставить новое значение в реестр. например, с помощью vbscript, добавьте путь "c:\test" в переменную PATH

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/modules для чтения и записи реестра

Ответ 2

В С# следующее создает постоянную переменную среды:

Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);

Ответ 3

или вы можете попробовать Windows PowerShell script; PowerShell по умолчанию установлен на Windows 7.

запустить powershell.exe

PS C:\> [Environment]::SetEnvironmentVariable("TestVariable", "Test value.", "User")

Затем, например, из cmd.exe

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\>echo %TestVariable%
Test value.

C:\>

Или (в новом) powershell.exe

PS C:\> echo $ENV:TestVariable
Test Value.
PS C:\>

проверить http://technet.microsoft.com/en-us/library/ff730964.aspx

Ответ 5

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

Environment.SetEnvironmentVariable("foo", "bar");

Ответ 6

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

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

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