Page 1 of 4

Менеджер переменных окружения

Posted: Tue 15 Dec, 2015 07:10
by IgorZ
Данный скрипт позволяет манипулировать переменными окружения: создавать, удалять, редактировать, сохранять в файл, читать из него.
Скрипт содержит один макрос.
Клавиша вызова: AltShiftE.

Требуемая версия Far 3.0.4000+.


Менеджер переменных окружения

Posted: Tue 15 Dec, 2015 07:13
by IgorZ
Простой (пока, во всяком случае) скрипт для работы с переменными окружения. Удобней, чем команда SET из командной строки.

Менеджер переменных окружения

Posted: Tue 15 Dec, 2015 08:44
by DrKnS
IgorZ wrote: Клавиша вызова: CtrlShiftE.
Не работает. Наверное, потому что в скрипте AltShiftE? :)

Во всех таких редакторах очень хочется видеть разбиение "композитных" переменных (path, include, lib...) на составляющие и редактирование их по отдельности.

Менеджер переменных окружения

Posted: Tue 15 Dec, 2015 09:09
by IgorZ
DrKnS wrote:
IgorZ wrote: Клавиша вызова: CtrlShiftE.
Не работает. Наверное, потому что в скрипте AltShiftE? :)
Бли-ин! Щас поправлю.
DrKnS wrote:Во всех таких редакторах очень хочется видеть разбиение "композитных" переменных (path, include, lib...) на составляющие и редактирование их по отдельности.
В принципе, думаю, возможно. Но как их лучше отличать? По списку предопределённых имён, или по наличию ";" в значении?

Менеджер переменных окружения

Posted: Tue 15 Dec, 2015 10:57
by DrKnS
По списку вполне нормально (в идеале брать его из другого файла, чтобы не терять при обновлениях).

Менеджер переменных окружения

Posted: Wed 16 Dec, 2015 05:05
by IgorZ
Версия 1.0.1 - Значение переменной окружения можно редактировать во встроенном редакторе Far-а. При этом составные значения, наподобие Path, разбиваются на строки. Мелкие правки.
DrKnS wrote:По списку вполне нормально (в идеале брать его из другого файла, чтобы не терять при обновлениях).
Пока что реализовал проще: по нажатию F4 в диалоге редактирования значение переменной окружения открывается в модальном редакторе Far-а. При этом оно бьётся на строки по ";". Если не будет устраивать, можно будет добавить список.

Менеджер переменных окружения

Posted: Wed 16 Dec, 2015 08:36
by DrKnS
Здорово, спасибо.

Менеджер переменных окружения

Posted: Wed 16 Dec, 2015 10:03
by 2useven10
А можно сделать, чтобы не раскрывались входящие в значение другие переменные?
Пример: TEMP=%USERPROFILE%\AppData\Local\Temp

Менеджер переменных окружения

Posted: Wed 16 Dec, 2015 10:06
by Shmuel
IgorZ, сделайте GUID для диалога редактирования, чтобы можно было разруливать конфликт с Dialog Tools.

Менеджер переменных окружения

Posted: Wed 16 Dec, 2015 12:41
by IgorZ
Версия 1.0.2 - Добавлен guid для диалога редактирования.
2useven10 wrote:А можно сделать, чтобы не раскрывались входящие в значение другие переменные?
Пример: TEMP=%USERPROFILE%\AppData\Local\Temp
Теоретически, думаю, можно: залезть в реестр и достать. Но там могут быть далеко не все переменные окружения. В общем, пока не вижу, зачем бы.
Shmuel wrote:IgorZ, сделайте GUID для диалога редактирования, чтобы можно было разруливать конфликт с Dialog Tools.
Уже.

Менеджер переменных окружения

Posted: Wed 16 Dec, 2015 12:56
by 2useven10
IgorZ wrote: В общем, пока не вижу, зачем бы.
Только для того, чтобы показывать то, что есть на самом деле.
Как сейчас - это (утрированно) как редактировать сишный текст после препроцессора.

Менеджер переменных окружения

Posted: Wed 16 Dec, 2015 13:08
by Shmuel
Ещё пожелания:
1. Регистро-независимая сортировка (сделать легко).
2. Режим "перманентного" редактирования: чтобы переменная окружения редактировалась не только для текущего процесса, а "на постоянку", как через Control Panel (видимо сделать не так легко).
3. При удалении в редакторе последней строки, например в %Path%, в результате получается точка с запятой в конце. Убирать.

Менеджер переменных окружения

Posted: Thu 17 Dec, 2015 08:01
by IgorZ
2useven10 wrote:
IgorZ wrote: В общем, пока не вижу, зачем бы.
Только для того, чтобы показывать то, что есть на самом деле.
Как сейчас - это (утрированно) как редактировать сишный текст после препроцессора.
Попробую. Тем более, что и Shmuel желает примерно того же. Но быстро не обещаю.
Shmuel wrote:Ещё пожелания:
1. Регистро-независимая сортировка (сделать легко).
2. Режим "перманентного" редактирования: чтобы переменная окружения редактировалась не только для текущего процесса, а "на постоянку", как через Control Panel (видимо сделать не так легко).
3. При удалении в редакторе последней строки, например в %Path%, в результате получается точка с запятой в конце. Убирать.
1,3 - сейчас поправлю.
2 - займусь, раз уже двое хотят, но со сроками не гарантирую.

Менеджер переменных окружения

Posted: Thu 17 Dec, 2015 10:13
by Smitis
А можно сделать, чтобы не раскрывались входящие в значение другие переменные?
Теоретически, думаю, можно: залезть в реестр и достать.
Не получится, наверное. Переменные REG_SZ_EXPAND из реестра для процесса уже развёрнуты. Некоторых переменных, типа ProgramFiles вообще нет в реестре и они, похоже, не все разворачиваются. Пользовательские переменные перекрывают значения системных, кроме PATH, которая собирается аж их трёх разных мест (две environment + из app paths, если есть). Кроме того, переменные процесса уже могут быть модифицированы (вручную, тем же макросом или при запуске ФАРа через коммандный файл).
2. Режим "перманентного" редактирования: чтобы переменная окружения редактировалась не только для текущего процесса, а "на постоянку", как через Control Panel
2 - займусь, раз уже двое хотят, но со сроками не гарантирую.
Мне кажется, придётся делать три списка переменных: переменные текущего процесса, пользовательские переменные из HKCU\Environment и системные переменные из HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Не стоит их смешивать.

Менеджер переменных окружения

Posted: Thu 17 Dec, 2015 10:49
by IgorZ
Версия 1.0.3 - Рефакторинг. Небольшие правки.
Smitis wrote:Переменные REG_SZ_EXPAND из реестра для процесса уже развёрнуты. Некоторых переменных, типа ProgramFiles вообще нет в реестре и они, похоже, не все разворачиваются. Пользовательские переменные перекрывают значения системных, кроме PATH, которая собирается аж их трёх разных мест (две environment + из app paths, если есть). Кроме того, переменные процесса уже могут быть модифицированы (вручную, тем же макросом или при запуске ФАРа через коммандный файл).
Кое-что ещё в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Но там имена немного не те, придётся соответствия раскручивать.
Smitis wrote: Мне кажется, придётся делать три списка переменных: переменные текущего процесса, пользовательские переменные из HKCU\Environment и системные переменные из HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Не стоит их смешивать.
Там видно будет, как получится.