SetEnv Управление переменными окружения NT

Опубликовано: 27 Марта, 2023


Винсент Фатика выпустил SETENV.EXE

SETENV.EXE предлагает большую функциональность, чем
Утилита командной строки ResKit SETX.EXE для просмотра и управления Windows
«Главная» среда NT. Для фона в Windows NT/Windows 2000
переменные окружения, читайте Q100843.

 Синтаксис SETENV:
Чтобы установить или изменить значение переменной:

Среда пользователя: setenv -u значение имени (также /u)
Среда компьютера: значение имени setenv -m (также /m)

Пользовательская среда по умолчанию setenv -d значение имени (также /d)
Нестабильная среда: значение имени setenv -v (также /v)
Чтобы отобразить переменную: setenv -u|-m|-d|-v имя
Чтобы удалить переменную: setenv -u|-m|-d|-v имя -delete (также /delete)
Чтобы отобразить среду: setenv -u|-m|-d|-v

Используйте двойные кавычки вокруг значений, содержащих пробелы.
Если имя или значение переменной СОДЕРЖИТ двойную кавычку, экранируйте эту двойную кавычку как ”
Коды возврата: 0 = успех, 1 = переменная не найдена,
2 = доступ запрещен, 3 = другая ошибка
4 = SETENV показал это синтаксическое сообщение
Запрошенный вывод поступает в STDOUT; помощь и сообщения об ошибках в STDERR.


Доступ к HKEY_CURRENT_USEREnvironment
или HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession
ManagerEnvironment
, то есть «пользовательская» или «машинная» среда.
SETENV.EXE отобразит всю среду или
значение одной переменной, установить или изменить значение одной переменной или
удалить переменную. После успешного внесения изменений в среду SETENV
вызывает RegFlushKey, чтобы убедиться, что изменения
немедленно записывается на диск, а затем вызывает BroadcastSystemMessage для информирования всех (заинтересованных) компонентов
что произошли изменения в окружающей среде. ИССЛЕДОВАТЕЛЬ (и не многие другие
программы) действует на это сообщение, обновляя его среду. BroadcastSystemMessage - это улучшение SendMessageTimeout, которое, по-видимому, также используется SETX.
как страница MyComputerPropertiesEnvironment; SendMessageTimeout может завершиться ошибкой, если EXPLORER работает как
отдельный процесс от панели задач/рабочего стола (см. Q104011 базы знаний)
и на данный момент не имеет открытых окон для обработки сообщения. Синтаксис SETENV
появляется сообщение (которое будет отображаться, если в противном случае используется недопустимый синтаксис)
ниже. Получите SETENV.EXE по анонимному FTP. Винсент Фатика изменил SETENV.EXE на
создавать (и устанавливать) переменные типа REG_EXPAND_SZ всякий раз, когда хотя бы два
в строке значения встречаются вхождения «%» (это хороший признак того, что
предполагается некоторое расширение); в противном случае используется тип REG_SZ. Для переменных
типа REG_EXPAND_SZ, ссылки внутри переменной на другую среду
переменная будет расширена при использовании. Чтобы установить переменную, содержащую ссылку на
другую переменную, вы должны указать CMD.EXE не расширять имя указанной
переменная перед отправкой командной строки в SETENV; сделать это следующим образом (для
пример):

setenv -u foo "%"профиль пользователя"%"

С интерпретатором команд 4NT.EXE используйте:

setenv -u foo%%userprofile%%

Переменная «foo» будет установлена в «%userprofile%», и при ссылке будет
вернуть любое значение переменной «userprofile». *В последнее время
(05.08.98) Винсент Фатика добавил поддержку (-v) для «изменчивой» среды NT,
который хранится в «HKEY_CURRENT_USERVolatile Environment». это тоже часть
среды, которую Explorer предоставляет приложениям. Переменные и
значения в энергозависимой среде не сохраняются после выхода из системы и перезагрузки и
не распространяется операционной системой. Новый параметр проверяется успешно, в том числе когда
SETENV вызывается из сценария входа.

* Совсем недавно (19.12.98) Винсент Фатика добавил поддержку (-d) для
HKEY_USERS.DEFAULTКлюч среды