- Windows 7.
- Это для моей собственной машины, поэтому не имеет значения, нужны ли ей права администратора или что-то в этом роде.
- Предпочтительно в Python или .NET, но я могу узнать немного программирования Win32 (C/C++), если это необходимо.
ответ
, если вы хотите, чтобы навсегда установить переменную окружения, вы можете вставить новое значение в реестре. например, с помощью VBScript, добавьте путь «C: \ тест» в переменной 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/модули для чтения и записи реестр
Используйте класс окружающей среды, как это:
Environment.SetEnvironmentVariable("foo", "bar");
Программно изменяемые переменные среды действуют только на время работы программы. Не слышали о том, чтобы на самом деле изменить окружающую среду в масштабах всей системы и сделать ее эффективной там и тогда. Я не думаю, что это можно сделать, что потребовало бы выкарабкаться на привилегированном уровне и, возможно, возиться с основной системой для достижения этого.
Даже под Unix это невозможно сделать, несмотря на некоторые хаки, чтобы достичь этого. Я помню, что видел код, который действительно модифицировал переменные среды под MSDOS, изменив структуру данных MSPOS в среде _psp, но это была система с одним заданием и 16 бит без какой-либо защиты.
Подводя итог, я не думаю, что вы можете это сделать, и было бы неразумно это делать, это можно было бы воспринимать так, как если бы система находилась под угрозой «трояном» или «вирусом» в результате, если попытаться для этого не только, что, как пользователь, я бы не хотел, чтобы программа изменяла переменную системной среды без моего согласия! Конечно, программа может записывать в реестр, чтобы сделать его постоянным, но я все равно хотел бы знать, в чем его цель и почему.
Посмотрите на [this] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653 (v = vs.85) .aspx) для переменной окружения, установленной в методе. -1 для FUD. – ssc
В C# следующий создает постоянную переменную окружения:
Environment.SetEnvironmentVariable("foo", "bar", EnvironmentVariableTarget.Machine);
или вы могли бы попробовать сценарий Windows PowerShell; 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
Это работает, как описано, но оболочка DOS, которая уже открыта когда установлен параметр env var, похоже, что оно не подбирает изменения, поэтому, по-видимому, PowerShell не передает сообщение «WM_SETTINGCHANGE», как описано [здесь] (http://msdn.microsoft.com/en-us/library/ окна/настольные/ms725497 (v = vs.85) .aspx). Хорошее начало, хотя. – ssc
F или кто-либо еще ищете быстрый ответ командной строки
Setx доступен на окнах серверов (изначально я думаю - http://technet.microsoft.com/en-us/library/cc755104.aspx)
+1 Более простой, чем предыдущий ответ и работает на win7 ultimate слишком – daitangio
setx.exe не может быть худшим инструментом для расширения 'Path'. Пользовательские и системные значения «Путь» никогда не должны быть объединены, а переменные процента в значении «REG_EXPAND_SZ» должны оставаться нерасширенными. setx.exe не может этого сделать. Он может сделать ужасный беспорядок, который нельзя отменить. – eryksun
не обвиняйте нас в том, что вы хотите использовать командную строку, предоставленную Microsoft: Описание: Создает или изменяет переменные среды в пользовательской или системной среде . Может устанавливать переменные на основе аргументов, regkeys или ввода файла. – user1885834
Просто сохраните это как .vbs и запустите. –