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

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

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

Post by IgorZ »

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

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

Attachments
EnvManager.1.4.1.7z
(13.22 KiB) Downloaded 273 times
Last edited by IgorZ on Thu 21 Sep, 2017 06:33, edited 4 times in total.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Простой (пока, во всяком случае) скрипт для работы с переменными окружения. Удобней, чем команда SET из командной строки.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

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

Во всех таких редакторах очень хочется видеть разбиение "композитных" переменных (path, include, lib...) на составляющие и редактирование их по отдельности.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

DrKnS wrote:
IgorZ wrote: Клавиша вызова: CtrlShiftE.
Не работает. Наверное, потому что в скрипте AltShiftE? :)
Бли-ин! Щас поправлю.
DrKnS wrote:Во всех таких редакторах очень хочется видеть разбиение "композитных" переменных (path, include, lib...) на составляющие и редактирование их по отдельности.
В принципе, думаю, возможно. Но как их лучше отличать? По списку предопределённых имён, или по наличию ";" в значении?
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

По списку вполне нормально (в идеале брать его из другого файла, чтобы не терять при обновлениях).
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 1.0.1 - Значение переменной окружения можно редактировать во встроенном редакторе Far-а. При этом составные значения, наподобие Path, разбиваются на строки. Мелкие правки.
DrKnS wrote:По списку вполне нормально (в идеале брать его из другого файла, чтобы не терять при обновлениях).
Пока что реализовал проще: по нажатию F4 в диалоге редактирования значение переменной окружения открывается в модальном редакторе Far-а. При этом оно бьётся на строки по ";". Если не будет устраивать, можно будет добавить список.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

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

Post by DrKnS »

Здорово, спасибо.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

А можно сделать, чтобы не раскрывались входящие в значение другие переменные?
Пример: TEMP=%USERPROFILE%\AppData\Local\Temp
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

IgorZ, сделайте GUID для диалога редактирования, чтобы можно было разруливать конфликт с Dialog Tools.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

Версия 1.0.2 - Добавлен guid для диалога редактирования.
2useven10 wrote:А можно сделать, чтобы не раскрывались входящие в значение другие переменные?
Пример: TEMP=%USERPROFILE%\AppData\Local\Temp
Теоретически, думаю, можно: залезть в реестр и достать. Но там могут быть далеко не все переменные окружения. В общем, пока не вижу, зачем бы.
Shmuel wrote:IgorZ, сделайте GUID для диалога редактирования, чтобы можно было разруливать конфликт с Dialog Tools.
Уже.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

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

Post by 2useven10 »

IgorZ wrote: В общем, пока не вижу, зачем бы.
Только для того, чтобы показывать то, что есть на самом деле.
Как сейчас - это (утрированно) как редактировать сишный текст после препроцессора.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Ещё пожелания:
1. Регистро-независимая сортировка (сделать легко).
2. Режим "перманентного" редактирования: чтобы переменная окружения редактировалась не только для текущего процесса, а "на постоянку", как через Control Panel (видимо сделать не так легко).
3. При удалении в редакторе последней строки, например в %Path%, в результате получается точка с запятой в конце. Убирать.
IgorZ
Posts: 790
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 15 times
Been thanked: 93 times

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

Post by IgorZ »

2useven10 wrote:
IgorZ wrote: В общем, пока не вижу, зачем бы.
Только для того, чтобы показывать то, что есть на самом деле.
Как сейчас - это (утрированно) как редактировать сишный текст после препроцессора.
Попробую. Тем более, что и Shmuel желает примерно того же. Но быстро не обещаю.
Shmuel wrote:Ещё пожелания:
1. Регистро-независимая сортировка (сделать легко).
2. Режим "перманентного" редактирования: чтобы переменная окружения редактировалась не только для текущего процесса, а "на постоянку", как через Control Panel (видимо сделать не так легко).
3. При удалении в редакторе последней строки, например в %Path%, в результате получается точка с запятой в конце. Убирать.
1,3 - сейчас поправлю.
2 - займусь, раз уже двое хотят, но со сроками не гарантирую.
User avatar
Smitis
Posts: 1709
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 23 times
Been thanked: 55 times

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

Post by Smitis »

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

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

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

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