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

Здесь выкладываются готовые к использованию макросы и скрипты.
IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Tue 15 Dec, 2015 07:10

Данный скрипт позволяет манипулировать переменными окружения: создавать, удалять, редактировать, сохранять в файл, читать из него.
Скрипт содержит один макрос.
Клавиша вызова: AltShiftE.

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

Attachments
EnvManager.1.4.1.7z
(13.22 KiB) Downloaded 20 times
Last edited by IgorZ on Thu 21 Sep, 2017 06:33, edited 4 times in total.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Tue 15 Dec, 2015 07:13

Простой (пока, во всяком случае) скрипт для работы с переменными окружения. Удобней, чем команда SET из командной строки.

User avatar
DrKnS
Posts: 4643
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

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

Post by DrKnS » Tue 15 Dec, 2015 08:44

IgorZ wrote: Клавиша вызова: CtrlShiftE.
Не работает. Наверное, потому что в скрипте AltShiftE? :)

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

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Tue 15 Dec, 2015 09:09

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

User avatar
DrKnS
Posts: 4643
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

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

Post by DrKnS » Tue 15 Dec, 2015 10:57

По списку вполне нормально (в идеале брать его из другого файла, чтобы не терять при обновлениях).

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Wed 16 Dec, 2015 05:05

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

User avatar
DrKnS
Posts: 4643
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 4 times
Been thanked: 125 times
Contact:

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

Post by DrKnS » Wed 16 Dec, 2015 08:36

Здорово, спасибо.

2useven10
Posts: 3045
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 83 times

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

Post by 2useven10 » Wed 16 Dec, 2015 10:03

А можно сделать, чтобы не раскрывались входящие в значение другие переменные?
Пример: TEMP=%USERPROFILE%\AppData\Local\Temp

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Wed 16 Dec, 2015 10:06

IgorZ, сделайте GUID для диалога редактирования, чтобы можно было разруливать конфликт с Dialog Tools.

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Wed 16 Dec, 2015 12:41

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

2useven10
Posts: 3045
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 83 times

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

Post by 2useven10 » Wed 16 Dec, 2015 12:56

IgorZ wrote: В общем, пока не вижу, зачем бы.
Только для того, чтобы показывать то, что есть на самом деле.
Как сейчас - это (утрированно) как редактировать сишный текст после препроцессора.

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Wed 16 Dec, 2015 13:08

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

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Thu 17 Dec, 2015 08:01

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

Smitis
Posts: 1490
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 14 times
Been thanked: 24 times
Contact:

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

Post by Smitis » Thu 17 Dec, 2015 10:13

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

IgorZ
Posts: 463
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 6 times
Been thanked: 9 times

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

Post by IgorZ » Thu 17 Dec, 2015 10:49

Версия 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. Не стоит их смешивать.
Там видно будет, как получится.
Last edited by IgorZ on Thu 01 Jan, 1970 01:00, edited 0 times in total.
Reason: Спрятан оверквотинг

Shmuel
Posts: 5230
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 151 times

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

Post by Shmuel » Thu 17 Dec, 2015 11:02

Мелкая ошибка: нажимаем Ins, в диалоге вводим какое-то имя, значение оставляем пустым, жмём Enter.
EnvManager.lua:127: bad argument #2 to 'format' (string expected, got nil)

Post Reply

Return to “Полезные макросы и скрипты”