Как я могу изменить переменную окружения PATH пользователя без выхода из системы?

22

Вопрос в значительной степени говорит обо всем; У меня есть пользователи, у которых нет прав на редактирование их собственной PATHпеременной среды, и если им нужно по каким-то причинам изменить их , им необходимо выйти из системы, чтобы администратор мог войти и изменить PATHих, прежде чем пользователь снова войдет в систему. , Это не идеально. Можно ли сделать это лучше?

ninesided
источник
Просто любопытно - но как именно вы мешаете пользователям изменять свою среду по умолчанию? Вы просто лишаете их доступа к Моему компьютеру / Свойства / Дополнительно / Переменная среды? Они все еще могут модифицировать HKCU / Environment с помощью различных методов.
Купер
См. Также superuser.com/questions/189654/…
Пэт
Предпочтения групповой политики? Просто мысль.
Саймон Кэтлин

Ответы:

6

Вы всегда можете вызвать оболочку cmd с правами администратора (или любым другим методом runas) и использовать такой инструмент, как SETX, для постоянного изменения пути. Существующие оболочки и / или работающие программы, вероятно, будут использовать старый путь, но любая новая оболочка / программа будет использовать новые настройки.

Berzemus
источник
25

Для учетных записей без прав администратора:

Откройте «Учетные записи пользователей» и выберите «Изменить переменные среды» ( http://support.microsoft.com/kb/931715 ).

Этот диалог покажет вам ваши текущие пользовательские переменные, а также системные переменные. Возможно, вам придется добавить локальную переменную PATH, если вы еще этого не сделали.

Например, чтобы обновить путь к каталогу Python 3.3, нажмите «Создать»:

Имя переменной: PATH Значение переменной:% PATH%; C: \ Python33

Это создает локальный PATH, беря текущий системный PATH и добавляя к нему.

Кертис Нельсон
источник
2
Я должен подумать, что это отвечает: «У меня есть пользователи, у которых нет разрешения на редактирование их собственного PATH ...», и он делает это постоянно , лучше, чем остальные. Очень красиво сделано. Интересно, почему нажатие на «Мой компьютер» защищено администратором, если это не так? Просто защитите нелокальные поля так же, как это делает пользовательский интерфейс при доступе таким способом.
Раффин
10

Мой компьютер / Свойства / Дополнительно / Переменные среды. Изменения вступают в силу немедленно, за исключением уже открытых окон командной строки. Нет необходимости выходить из системы и входить обратно.

ПРИМЕЧАНИЕ. Если у вас нет доступа к этому окну, вы можете получить его, запустив его rundll32 sysdm.cpl,EditEnvironmentVariablesиз окна «Выполнить» или из командной строки.

Джон Гарденье
источник
обычные пользователи в моей сети не могут изменять свои собственные переменные окружения, как это, если я не могу открыть этот экран с повышенными привилегиями через «запустить как ...» или что-то подобное, это не сработает для меня
например,
4

В командной строке вы можете сделать:

set PATH=C:\somedir;%PATH%

но это только изменяет его для командной строки (и любых приложений, запускаемых из командной строки). Предполагая, что вы хотите, чтобы это применялось ко всему, что пользователь делает, вы меняете переменные среды пользователя. Щелкните правой кнопкой мыши Мой компьютер, Свойства, Дополнительно, Переменные среды и в разделе «Пользовательские переменные для добавления переменной:

PATH = C:\whatever

Когда пользователь входит в систему, он добавляется к общесистемному пути.

Джон Ренни
источник
Мне нужно изменить порядок записей уже в PATH, поэтому добавление удаления из пользовательских переменных в этом случае не работает
ninesided
setx, как упоминал @Berzemus, может постоянно редактировать системную переменную PATH ( /mпереключатель).
Пэт
2

Пользователь может установить переменную PATH в командной строке, которая переопределит общесистемную переменную PATH, даже если у пользователя нет прав «Администратор». Изменение вступит в силу для новых процессов, которые пользователь запускает из этой командной строки. (Существующий процесс Explorer и любые другие процессы, выполняемые пользователем при внесении изменения, не будут «видеть» это изменение.)

Эван Андерсон
источник
1

В дополнение к ответам, приведенным выше, вы также можете обновить реестр (который имеет преимущество, заключающееся в возможности написания сценариев):

Переменная PATH хранится в HKEY_CURRENT_USER \ Environment.

Чтобы прочитать текущий путь:

reg query HKEY_CURRENT_USER\Environment /v PATH

Чтобы добавить значение c: \ somedir к пути:

reg add HKEY_CURRENT_USER\Environment /v PATH /d "%PATH%;c:\somedir"

Обратите внимание, что при запуске процессы читают среду, поэтому вам придется перезапустить процесс, чтобы он получил новый путь.

Обновление: я нашел еще один способ:

rundll32 sysdm.cpl,EditEnvironmentVariables

Опять же, этот апплет редактирует реестр и имеет тот же эффект, что и выше.

Кристофер Норонья
источник