Как я могу установить переменные среды пользователя (например, PATH) из учетной записи без прав администратора в Windows 10?

Я знаю, что есть кнопка для того, что я хочу: смотрите здесь, но когда я нажимаю на нее, ничего не происходит.

Вы можете также проверить этот форум пост для другого человека , который имеет ту же проблему.

У меня работает windows 10 pro v1511 build10586.545

Редактировать: это была ошибка Windows 10. Обновление до последнего обновления (Anniversary Update) исправило это.

1 ответ1

0

Вам нужна setx.exe (это программа командной строки). Используйте setx /? чтобы получить информацию об использовании, но для вашего случая использования это сводится к следующему:

setx MYVAR "The value of my variable"

Обратите внимание, что setx не обновляет текущие переменные среды для работающей программы (например, CMD или Powershell); Вам также нужно использовать команду set для обновления переменных в оболочке.

Два других способа сделать это:

  1. Используйте PowerShell для вызова функции .NET [System.Environment]::SetEnvironmentVariable(<varname>, <value>, [System.EnvironmentVariableTarget]::User) (вы можете заменить 1 или "user" на [System.EnvironmentVariableTarget]::User ; это перечисление)
  2. Редактируйте реестр напрямую. По адресу https://stackoverflow.com/questions/573817/where-are-environment-variables-stored-in-registry расположение: HKCU\Environment. Например, вы можете добавить следующее значение (используя программу reg.exe ): reg add /v <VARNAME> /d <VALUE>

Если вы хотите обновить свой PATH для каждого пользователя, не добавляя значения PATH для всех пользователей (локальный компьютер) в свой персональный PATH, вам нужно будет немного сложнее. Используя reg query или [System.Environment]::GetEnvironmentVariable(<varname>, [System.EnvironmentVariableTarget]::User) , вы можете получить текущее значение из реестра, вместо того, чтобы получать текущее значение процесса для PATH (который является объединением пользовательских и машинных значений). Используя PS, вы можете даже установить это значение во временную переменную:

set mypath $([Environment]::GetEnvironmentVariable("Path", 1)) создает временную (локальную, не относящуюся к среде) переменную с именем "mypath" и устанавливает для нее текущее пользовательское значение переменной среды PATH (Windows имена переменных среды нечувствительны к регистру).

echo $mypath чтобы убедиться, что вы правильно поняли.

set mypath ($mypath + ';C:\foo\bar'); echo $mypath добавляет C:\foo\bar к временной переменной и возвращает результат обратно.

setx Path $mypath чтобы обновить переменную среды с вашей объединенной строкой.

set $env:Path ($env:Path + ';C:\foo\bar') чтобы также обновить текущий сеанс PowerShell или просто запустить новый из проводника Windows (Пуск, панель задач и т. д.).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .