Я хотел бы использовать PATH Manager для удобного отключения / включения заданного пути из переменной среды PATH.

Я пытаюсь отключить путь C:\programming\python\WinPython-32bit-2.7.9.3\python-2.7.9 , поэтому я снял соответствующие флажки "Active" и "System", а затем нажал кнопку "Сохранить":

Затем я запустил новое окно cmd.exe, но вижу, что C:\programming\python\WinPython-32bit-2.7.9.3\python-2.7.9 все еще находится в пути:

Я проверил переменные PATH пользователя и системы, они больше не содержат C:\programming\python\WinPython-32bit-2.7.9.3\python-2.7.9 .

Я что-то пропустил?

1 ответ1

1

Я только что проверил исходный код. Программа просто редактирует раздел реестра, в котором хранится информация PATH -> SYSTEM\CurrentControlSet\Control\Session Manager\Environment\path

Я не видел ни одной команды, сообщающей операционной системе, что ключ изменился. Таким образом, кажется, что перезагрузка действительно требуется. Вариант может быть найден здесь: https://stackoverflow.com/questions/3189652/using-rundll32-user32-dll-to-indicate-that-a-users-environment-has-changed

Еще одна проблема: при active флажке изменения не сохраняются. И кнопка сохранения остается отключенной.

Резюме: что работает:

  1. Нажмите active кнопку-флажок (это то, что вы действительно хотите)
  2. Добавить любой новый путь (теперь кнопка сохранения включена)
  3. Нажмите сохранить (теперь изменения хранятся в реестре)
  4. Открыть окно PowerShell
  5. Тип [Environment]::SetEnvironmentVariable("dummy","anyValue","User") (последнее значение может быть " Machine , " User или " Process . Это отправляет широковещательную рассылку среды обновления в систему)
  6. Откройте новый cmd и введите echo %path% (или используйте where) (теперь изменения с 1. видны)

Таким образом, использование PATH Manager совсем не удобно. Однако вы можете использовать скрипт PowerShell для редактирования PATH и сразу же применить изменения -> http://poshcode.org/3537

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