Изменение переменных окружения без перезагрузки
От: DemAS http://demas.me
Дата: 04.12.07 06:30
Оценка: 6 (1) +1
Возможно ли в Win менять значения переменных окружения буз перезагрузки?

Да и вообще, существует ли удобный инструментарий для работы с ними. Стандартный похож на издевательство ибо:
— если переменная длинная и является перечислением (типа PATH), то фиг в ней что найдешь в этом маленьком окошке, который предлагается для ее редактирования
— чтобы ввести новую переменную нужно нажать Добавить, нужно что-то написать в очень маленьком окошке и нажать ОК

IMHO обычный текстовый файл был бы и то удобнее, и не было бы очередной проблемы

— резервного копирования эих переменных

Кстати, почему после изменения переменной окрыжения нужно обязательно перезагружаться иначе она не вступит в силу? Что за такие важные структуры инициализуруются в windows internals, что я не могу прописать путь где ОС будет искать файлы без ее перезагрузки? Бред? Или я что-то не понимаю?

Кроме того надоели такие вещи:

После установки компилятора необходимо проверить, что в переменной окружения PATH прописан путь:
<путь к компилятору>bin\i386-win32\;
Причём, он должен там быть раньше, чем пути к остальным FPC, если их в системе несколько. Кроме того, если в системе установлен, например, MinGW, то, если, в PATH путь к нему прописан раньше, чем к FPC, то будет использован не ld из FPC, а ld из MinGW и ничего собрать не удастся.


В общем, может кто-то нашел что-то удобное, чтобы сосуществовать рядом с этим безобразием?

p.s. Linux не предлагать
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re: Изменение переменных окружения без перезагрузки
От: Sergeant_BY Беларусь  
Дата: 04.12.07 07:07
Оценка: 4 (1)
Здравствуйте, DemAS, Вы писали:

DAS>Возможно ли в Win менять значения переменных окружения буз перезагрузки?

Без перезагрузки процесса которому нужно перечитать обновленный environment — нет.
Без перезагрузки всей системы — пожалуй да.

DAS> Да и вообще, существует ли удобный инструментарий для работы с ними. Стандартный похож на издевательство ибо:

DAS> — если переменная длинная и является перечислением (типа PATH), то фиг в ней что найдешь в этом маленьком окошке, который предлагается для ее редактирования — чтобы ввести новую переменную нужно нажать Добавить, нужно что-то написать в очень маленьком окошке и нажать ОК
setx path "%PATH%;C:\New Folder"
setx — из ресурскита к XP, например.

DAS> IMHO обычный текстовый файл был бы и то удобнее, и не было бы очередной проблемы

Удобнее чем и в каком виде?
Кстати "эти маленькие окошки" — просто frontend к редактированию значений в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment Т.е. если удобнее для этого пользоваться текстовыми файлами (для импорта в regedit, например) — пожалуйста.
Но запуск/перезапуск процесса которому нужно перечитать изменения понадобится по любому.

DAS> — резервного копирования эих переменных

set > backup_env.txt ?

DAS> Кстати, почему после изменения переменной окрыжения нужно обязательно перезагружаться иначе она не вступит в силу? Что за такие важные структуры инициализуруются в windows internals, что я не могу прописать путь где ОС будет искать файлы без ее перезагрузки? Бред? Или я что-то не понимаю?

Оккрываю System properties->Advanced->Environment, добавляю какую-нибудь лабуду в конце %PATH%, нажимаю ОК.
Запускаю cmd, пишу set и вижу в %PATH% ту самую лабуду.
Что я делаю не так?

DAS> Кроме того надоели такие вещи:

DAS>

DAS> После установки компилятора необходимо проверить, что в переменной окружения PATH прописан путь:
DAS><путь к компилятору>bin\i386-win32\;
DAS>Причём, он должен там быть раньше, чем пути к остальным FPC, если их в системе несколько. Кроме того, если в системе установлен, например, MinGW, то, если, в PATH путь к нему прописан раньше, чем к FPC, то будет использован не ld из FPC, а ld из MinGW и ничего собрать не удастся.

DAS> В общем, может кто-то нашел что-то удобное, чтобы сосуществовать рядом с этим безобразием?
DAS> p.s. Linux не предлагать
А в Linux'е разве по другому?
Предложите другой разумный способ указания путей для поиска исполняемых файлов для запуска с системой приоритетов...
Re: Изменение переменных окружения без перезагрузки
От: DOOM Россия  
Дата: 04.12.07 07:11
Оценка: 2 (1)
Здравствуйте, DemAS, Вы писали:

DAS>Возможно ли в Win менять значения переменных окружения буз перезагрузки?

Конечно.

DAS> Да и вообще, существует ли удобный инструментарий для работы с ними. Стандартный похож на издевательство ибо:

DAS> — если переменная длинная и является перечислением (типа PATH), то фиг в ней что найдешь в этом маленьком окошке, который предлагается для ее редактирования
DAS> — чтобы ввести новую переменную нужно нажать Добавить, нужно что-то написать в очень маленьком окошке и нажать ОК

DAS> IMHO обычный текстовый файл был бы и то удобнее, и не было бы очередной проблемы


DAS> — резервного копирования эих переменных

Ну тут да... Косяк. Можно напрямую через реестр, если этот способ можно назвать удобным...
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment — это системные переменные
HKEY_CURRENT_USER\Environment — пользовательские

Кроме того, в Support Tools'ах есть утилита setx, которая, в отличие от set позволяет делать постоянные изменения в переменных окружения.



DAS> Кстати, почему после изменения переменной окрыжения нужно обязательно перезагружаться иначе она не вступит в силу? Что за такие важные структуры инициализуруются в windows internals, что я не могу прописать путь где ОС будет искать файлы без ее перезагрузки? Бред? Или я что-то не понимаю?

Видать что-то не понимаешь. В винде, как и во многих других ОС, окружение привязано к процессу — поэтому, чтобы отразить изменения в окружении надо перезапустить процесс. Т.е. поменял PATH, перезапусти cmd.exe и он уже будет с новыми путями.


DAS> Кроме того надоели такие вещи:


DAS>

DAS> После установки компилятора необходимо проверить, что в переменной окружения PATH прописан путь:
DAS><путь к компилятору>bin\i386-win32\;
DAS>Причём, он должен там быть раньше, чем пути к остальным FPC, если их в системе несколько. Кроме того, если в системе установлен, например, MinGW, то, если, в PATH путь к нему прописан раньше, чем к FPC, то будет использован не ld из FPC, а ld из MinGW и ничего собрать не удастся.

Не вижу проблемы. Сделай себе 2 скрипта — один при запуске cmd добавляет в PATH пути к MinGW, другой к чему-нибудь еще. Запускай нужный и не засоряй общесистемные переменные...


DAS> В общем, может кто-то нашел что-то удобное, чтобы сосуществовать рядом с этим безобразием?

Ну что знал, то предложил...

DAS> p.s. Linux не предлагать

А там по сути также. Переменные окружения вещь очень старая и ведет себя так, как это было придумано десятилетия назад.
Re[2]: Изменение переменных окружения без перезагрузки
От: DemAS http://demas.me
Дата: 04.12.07 07:18
Оценка:
Здравствуйте, Sergeant_BY, Вы писали:

S_B>setx path "%PATH%;C:\New Folder"

S_B>setx — из ресурскита к XP, например.

Спасибо, гораздо удобнее.

DAS>> — резервного копирования эих переменных

S_B>set > backup_env.txt ?

А обратно как?
Понимаю, что можно написать скрипт, который сформирует набор команд для setx, но может есть что-то готовое.

S_B>Оккрываю System properties->Advanced->Environment, добавляю какую-нибудь лабуду в конце %PATH%, нажимаю ОК.

S_B>Запускаю cmd, пишу set и вижу в %PATH% ту самую лабуду.
S_B>Что я делаю не так?

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

DAS>> p.s. Linux не предлагать

S_B>А в Linux'е разве по другому?

Не знаю. Но на всякий случай предупредил. Спасибо
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re: А вот в лиинуксе!....
От: Sheridan Россия  
Дата: 04.12.07 07:47
Оценка:


--
...belive in the matrix...
Posted via RSDN NNTP Server 2.1 beta
Matrix has you...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.