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

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

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

Post by IgorZ »

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

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

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

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

Post by IgorZ »

Latest post of the previous page:

Версия 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: 6166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 329 times

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

Post by Shmuel »

Мелкая ошибка: нажимаем Ins, в диалоге вводим какое-то имя, значение оставляем пустым, жмём Enter.
EnvManager.lua:127: bad argument #2 to 'format' (string expected, got nil)
Smitis
Posts: 1626
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

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

Post by Smitis »

IgorZ wrote:Кое-что ещё в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Но там имена немного не те, придётся соответствия раскручивать.
По моему, это уже из разряда самодеятельности. Тогда уж пути получать через SHGetSpecialFolderLocation. Но зачем?
Разум когда-нибудь победит.
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

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

Post by IgorZ »

Shmuel wrote:Мелкая ошибка: нажимаем Ins, в диалоге вводим какое-то имя, значение оставляем пустым, жмём Enter.
EnvManager.lua:127: bad argument #2 to 'format' (string expected, got nil)
Версия 1.0.4.
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

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

Post by IgorZ »

Smitis wrote:
IgorZ wrote:Кое-что ещё в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

Но там имена немного не те, придётся соответствия раскручивать.
По моему, это уже из разряда самодеятельности. Тогда уж пути получать через SHGetSpecialFolderLocation. Но зачем?
А все скрипты к FAR-у - самодеятельность ;). Вообще, всё зависит от соотношения затраченного труда и полученного результата. Если сделать просмотр и редактирование переменных из реестра, то добавить обработку ещё и этих будет, скорее всего, сравнительно дёшево.Так что посмотрим, что вообще из этой идеи получится.
Smitis
Posts: 1626
Joined: Fri 18 Mar, 2005 12:51
Location: Питер
Has thanked: 20 times
Been thanked: 41 times

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

Post by Smitis »

Просто это уже будет не редактор переменных, а твикер винды. ;)

П.С.
Может свою версию довести до ума и выложить? Наверное, так и сделаю. Будет конкурент :) Вот только с переменными процесса разберусь, их у меня не было.
Разум когда-нибудь победит.
User avatar
HaRT
Moderator
Posts: 9529
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 228 times

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

Post by HaRT »

IgorZ wrote: Версия 1.0.1 - Значение переменной окружения можно редактировать во встроенном редакторе Far-а. При этом составные значения, наподобие Path, разбиваются на строки.
Скрипт не пробовал, но интересно, правильно ли будут разбиваться пути, некоторые из которых закавычены из-за наличия в них точки с запятой.
Фар есть инструмент, а не нянька. © 2009 DrKnS
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

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

Post by IgorZ »

Версия 1.0.5 - Более корректный разбор композитного значения переменной.
HaRT wrote:
IgorZ wrote: Версия 1.0.1 - Значение переменной окружения можно редактировать во встроенном редакторе Far-а. При этом составные значения, наподобие Path, разбиваются на строки.
Скрипт не пробовал, но интересно, правильно ли будут разбиваться пути, некоторые из которых закавычены из-за наличия в них точки с запятой.
Правильно, правильно, бе-бе-бе! :)
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

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

Post by IgorZ »

Версия 1.1.0 - Добавлена обработка переменных окружения в реестре. Мелкие правки.
Внимание!!! В связи с тем, что запись в реестр была исправлена недавно (стабильная версия 4455 делает это некорректно), в скрипте встроена проверка версии LuaMacro. Если версия недостаточно свежая, редактирование и удаление переменных из реестра будет недоступно, режим "смотри, но не трогай".

2useven10, Shmuel - этого хотели?
2useven10
Posts: 4072
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 189 times

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

Post by 2useven10 »

Не совсем.
При редактировании переменных 'в реестре' хочется сразу видеть как изменятся зависимые переменные.
Реальная запись при этом лучше по отдельной кнопке {принять изменения}, после того как все последствия изменений видны и устраивают.
Shmuel
Posts: 6166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 329 times

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

Post by Shmuel »

IgorZ, мне хотелось видеть отдельный режим для редактирования переменных окружения текущего процесса Фара и отдельный - для редактирования системных переменных окружения (как в контрольной панели). Насколько я вижу, отдельного режима нет, всё вместе. Попробовал изменить одну переменную окружения, перезапустил Фар - наблюдаю прежнее значение.
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

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

Post by IgorZ »

2useven10 wrote:Не совсем.
При редактировании переменных 'в реестре' хочется сразу видеть как изменятся зависимые переменные.
Реальная запись при этом лучше по отдельной кнопке {принять изменения}, после того как все последствия изменений видны и устраивают.
То есть, жмём "редактировать", изменяем, "ОК", выходит окно, что-то вроде:

Code: Select all

┌─────────────────────────────────────┐
│  Переменная A сменит значение.      │
│  Старое: BBB                        │
│  Новое : CCC                        │
├─────────────────────────────────────┤
│  [Принять изменения] [Отказаться]   │
└─────────────────────────────────────┘
Так?
Shmuel wrote:IgorZ, мне хотелось видеть отдельный режим для редактирования переменных окружения текущего процесса Фара и отдельный - для редактирования системных переменных окружения (как в контрольной панели). Насколько я вижу, отдельного режима нет, всё вместе.
Дизайн - штука разнообразная, ограниченная только воображением, а оно у всех работает по-разному. Здесь мы, видимо, не совпали. Не нравится то, что редактирование в реестре только из отдельного окна просмотра? Или непременно нужно вызывать отдельный список, в котором только реестровые переменные? Второй вариант мне кажется неудобным: лучше видеть значение этой переменной в памяти.
Shmuel wrote:Попробовал изменить одну переменную окружения, перезапустил Фар - наблюдаю прежнее значение.
Ага, обновлять надо те, что в памяти. Ладно, посмотрю, как это делать.
Shmuel
Posts: 6166
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 329 times

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

Post by Shmuel »

На основном окне внизу в перечислении клавиш нет F3, вот я это и упустил.
Но переход к редактированию системных переменных через окно, вызываемое по F3, - это действительно своеобразный дизайн.
IgorZ
Posts: 700
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 13 times
Been thanked: 65 times

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

Post by IgorZ »

Версия 1.2.0 - Переделка интерфейса. Рефакторинг.
Значения теперь обновляются сразу, при изменении переменных реестра выводится сообщение о том, как это повлияет на переменные в памяти, для редактирования переменных реестра не надо входить в режим просмотра (да и нельзя, потому что его больше нет). Предыдущая версия пока оставлена, чтобы желающие могли сравнить интерфейс той и другой версии.
User avatar
Alexander84
Posts: 123
Joined: Fri 01 May, 2009 06:38
Has thanked: 14 times
Been thanked: 2 times

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

Post by Alexander84 »

Не хватает поиска а-ля LuaHistory. Скажем, вызываем скрипт, набираем path (вместо вглядывания в бесконечный перечень переменных и их многократного перелистывания по PageDown), получаем короткий перечень и там уже быстро переходим к правке.
User avatar
HaRT
Moderator
Posts: 9529
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 109 times
Been thanked: 228 times

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

Post by HaRT »

Alexander84 wrote: поиска а-ля LuaHistory
Имеется в виду инкрементная фильтрация?
А не стандартное ли фаровское меню там используется? Если оно, то фильтр там есть — читайте Справку по использованию меню.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Post Reply

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