Данный скрипт позволяет манипулировать переменными окружения: создавать, удалять, редактировать, сохранять в файл, читать из него.
Скрипт содержит один макрос.
Клавиша вызова: AltShiftE.
Требуемая версия Far 3.0.4000+.
Версия 1.0 - Первый релиз.
Версия 1.0.1 - Значение переменной окружения можно редактировать во встроенном редакторе Far-а. При этом составные значения, наподобие Path, разбиваются на строки. Мелкие правки.
Версия 1.0.2 - Добавлен guid для диалога редактирования.
Версия 1.0.3 - Рефакторинг. Небольшие правки.
Версия 1.0.4 - Мелкая правка.
Версия 1.0.5 - Более корректный разбор композитного значения переменной.
Версия 1.1.0 - Добавлена обработка переменных окружения в реестре. Мелкие правки.
Версия 1.2.0 - Переделка интерфейса. Рефакторинг.
Версия 1.2.1 - AltF4 сразу открывает переменную в редакторе Far. Белый и чёрный списки переменных. Разные правки.
Версия 1.3.0 - Добавлена возможность сохранять переменные в файл и считывать их оттуда. Nfo. Убран \0, попадавший в конец значения переменной из памяти. Исправлена область действия в MenuItem. Мелкие правки.
Версия 1.3.1 - Функции, добавленные в предыдущей версии не были описаны в подсказке и справке главного окна.
Версия 1.3.2 - Исправлена ошибка с сохранением переменных окружения при непустом белом списке. Мелкие правки.
Версия 1.3.3 - Исправлена ошибка с удалением всех переменных из чёрного списка, внесённая в версии 1.3.2.
Версия 1.4.0 - Добавлена возможность временно отключать переменные. Добавлена возможность загружать переменные из файла с командной строки. Переделана справка. Рефакторинг.
Версия 1.4.1 - Добавлена возможность загружать переменные из файла с командной строки без диалога выбора переменных. Добавлена возможность удалять переменные при загрузке из файла. Мелкие правки.
Менеджер переменных окружения
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. Не стоит их смешивать.
А можно сделать, чтобы не раскрывались входящие в значение другие переменные?
Теоретически, думаю, можно: залезть в реестр и достать.
Не получится, наверное.
Переменные 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:
2. Режим "перманентного" редактирования: чтобы переменная окружения редактировалась не только для текущего процесса, а "на постоянку", как через Control Panel
2 - займусь, раз уже двое хотят, но со сроками не гарантирую.
Мне кажется, придётся делать три списка переменных: переменные текущего процесса, пользовательские переменные из HKCU\Environment и системные переменные из HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment. Не стоит их смешивать.