Показать полную графическую версию : (статья) Переменные среды
amel27
TEMP - либо системаная, либо пользовательская (HKCU\Environment), но не локальная. Добро пожаловать в клуб запутавшихся :) Первый способ прямой, но запрещенный (для переименования каталога недостаточно), второй - правильный, но косвенный..Ну скорее всего, при изменении пути в этих параметрах, все последующие установки ПО будут предлагать по умолчанию новую директорию, указанную в параметре. Т.е. перенос, конечно, неполный, но и на работоспособность системы он не должен повлиять, разве что на приложения в старой директории при плохих раскладах ;)
Можно так Пути, возвращаемые переменными %PROGRAMFILES% и %COMMONPROGRAMFILES%, можно изменить в параметрах ProgramFilesDir и CommonFilesDir в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion, но правильнее задавать пути через файл ответов.
TEMP - либо системаная, либо пользовательская (HKCU\Environment), но не локальная. Добро пожаловать в клуб запутавшихся В моей классификации противоречия нет: HKCU - это "локальная"; а "пользовательская" - значит создаваемая/изменяемая пользователем для своих нужд (даже если этот пользователь Администратор). Нелегитимные способы правки я бы вообще не выносил в статью, разве только в смысле "подсмотреть значение" (как это умеет делать Руссинович), остальное - на совести читателя. :)
Petya V4sechkin
20-02-2006, 13:02
Vadikan
Пути, возвращаемые переменными %PROGRAMFILES% и %COMMONPROGRAMFILES%, можно изменить в параметрах ProgramFilesDir и CommonFilesDir в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion или через файл ответов.Через файл ответов - можно.
После установки системы (через реестр) - не рекомендую. Когда-то проводил такой эксперимент, после этого не работает Outlook Express.
Поправка: то есть, некоторые программы привязываются к абсолютному пути, а некоторые - как раз к переменной %ProgramFiles% (что ставит эти программы в неудобное положение :)
Vadikan
Вроде проясняется. Видимо, локальные переменные сидят в HKCU и больше нигде.
Вернулись к моему первому письму в этой ветке ;). Цитата из МС: Системные переменные среды определяют поведение глобальной среды операционной системы. Локальные переменные среды определяют поведение среды в данном экземпляре Cmd.exe. А где эти переменные сидят, это уже второй вопрос.
А что такое встроенные? Видимо те, что в HKLM лежат
как раз те, которые там не лежат. time, date
Даже если в HKLM зaгнать свою username, это не будет иметь эффекта.
если процесс будет запущен от имени системы, то системное username не будет переопредено и останется значение из HKLM, только какой в этом практический смысл ;).
TEMP - либо системаная, либо пользовательская (HKCU\Environment), но не локальная.
пользовательская т.к. прописана в HKCU. и локальная т.к. не имеет действия на все процессы ( если прописана в HKCU). Если прописана пользовательская, то она в конце концов переопределит системную при входе юзера. Если не прописана , то будет иметь значение системная.
a1exВернулись к моему первому письму в этой ветке . Цитата из МС: Системные переменные среды определяют поведение глобальной среды операционной системы. Локальные переменные среды определяют поведение среды в данном экземпляре Cmd.exe.А Пуск - Выполнить тоже является частью командной оболочки? А где эти переменные сидят, это уже второй вопрос.Но очень интересный :)
[Temp] - пользовательская т.к. прописана в HKCU. и локальная т.к. не имеет действия на все процессы ( если прописана в HKCU).Т.е. пользователсьскя = локальная, так?
Petya V4sechkinЧерез файл ответов - можно. После установки системы (через реестр) - не рекомендую. Когда-то проводил такой эксперимент, после этого не работает Outlook Express.Да, ну я же сказал, софт может не работать :) Надо тогда просто сказать
Пути, возвращаемые переменными %PROGRAMFILES% и %COMMONPROGRAMFILES%, можно задать через файл ответов.Вроде корректно - переменную мы не меняем. Так они все-таки локальные или системные? :))
Т.е. пользователсьскя = локальная, так? Перед любой классификацией нужно сначала определиться с критериями, тогда будет сложно запутаться независимо от названий. :)
Итак, если критерий - область видимости, тогда имеем: системные, локальные сессии, локальные процесса. Программисты подтвердят, что перекрытие имен - вполне штатная ситуация.
Упоминание о "встроенных" переменных наводит на мысль, что должны быть и "не встроенные", здесь скорее всего идет речь о возможности изменять значение этих переменных, т.е. о "владельце" этих переменных - либо это система ("встроенные"), либо пользователь ("???"). Последние ИМХО вполне логично назвать "пользовательскими", хотя с HKCU это никак не связано, т.к. админ может создать свою (т.е. пользовательскую) переменную и в HKLM.
Понятно, что такая классификация идет вразрез со справкой и даже противоречит здравому смыслу, т.к. правильней было бы назвать глобальные/локальные и системные/пользовательские соответственно...
А где эти переменные сидят, это уже второй вопрос.Но очень интересный Конечно, можно и этот критерий поставить в основание классификации, но придется учесть что кроме HKLM и HKCU есть еще HKU\.DEFAULT (профиль учетной записи SYSTEM), а также переменные, которые вовсе не хранятся в реестре (расчетные). С учетом всех четырех вариантов называть первые две "Системными" и "Пользовательскими" ИМХО было бы нелогично.
Vadikan
Т.е. пользователсьскя = локальная, так?
ну да, она же не расространяется на все процессы в системе
Вот-вот, если б справка в справке была четкая классификация, то не было бы проблем и в статье. А тут приходится извиваться между справкой и здравым смыслом :)
Так что там с %PROGRAMFILES%-то? К каким переменным мы их относим? Я уже хочу добить это дело.
Так что там с %PROGRAMFILES%-то? К каким переменным мы их относим?ИМХО "системная" по всем показателям
VadikanЯ уже хочу добить это дело.
А может в плане автоматической установки не заострять на этом внимания ;)? Прермення себе и переменная.
amel27
ИМХО "системная" по всем показателям
так же как и alluserprofile, которую МС к локальным относит ... видимо потому, что она может у разных прользователей принимать разные значения.
Попытался создать переменную c:\Temp (системную и поьзовательскую) с помощью setenv. Батник запускаю из CMDLINES.TXT
@echo on
:: Creating and Setting Temp folder...
md %systemdrive%\Temp
setenv -m Temp %systemdrive%\Temp
setenv -m Tmp %systemdrive%\Temp
setenv -d Temp %systemdrive%\Temp
setenv -d Tmp %systemdrive%\Temp
exit
устанавливает только пользовательскую переменную системную игнорирует.
Подскажите в чём ошибка?
barakuda
13-04-2008, 14:47
как мне присвоить переменной Х данные полученые из setenv.exe -v HOMEPATH :dont-know :clever-ma HOMEPATH взят к примеру
Petya V4sechkin
13-04-2008, 15:28
как мне присвоить переменной Х данные полученые из setenv.exe -v HOMEPATH HOMEPATH взят к примеру
Не понял, зачем для этого setenv.exe?
Echo %HOMEPATH%
serg_ssa
22-07-2008, 18:13
Не могу корректно подправить значение %ProgramFiles% во время загрузки WinPE.
Ситуация следующая: WinPe грузится из образа, а сама Program Files находится вне образа, соотв-но на другом диске. В зависимости от количества логических дисков, буква сидюка плавает.
В общем из секции RunOnceEx запускается батник, который устанавливает нужные пути в переменную %ProgramFiles% и в
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion,ProgramFilesDir
Но система определяет, что переменная %ProgramFiles% не изменилась. (x:\Program Files)
Если же вызвать в свойствах системы "переменные среды" и просто нажать "ОК", то все начинает правильно работать. При этом в реестре никаких модификаций не происходит кроме добавления ключа "ParseAutoexec"=1 в "windows NT\Currentversion\Winlogon". (((((
setenv.exe мне не помогла.
может надо какую-то функцию через rudll32 вызвать для решения проблемы???
barakuda
25-08-2008, 03:31
:hi:
доброво всем времени суток,
:help:
когда выполняю SETENV -U X "D:\FOLDER_NAME\%USERNAME%\FOLDER_NAME"
то получается так X = D:\FOLDER_NAME\administrator\FOLDER_NAME,
а надо чтоб так X = D:\FOLDER_NAME\%USERNAME%\FOLDER_NAME получилось.
:help:
Пожалста подскажыте что я делаю неправильно. Мне надо получить значение со знаком процентов.
:bye:
SETENV -U X "D:\FOLDER_NAME\%%USERNAME%%\FOLDER_NAME"
barakuda
25-08-2008, 21:38
:sorry:
както совсем из головы вылетело.
Спасибо теперь всё работает.
подскажите какие ключи в реестре нужно поменять чтобы изменить переменные среды пользователя. (те что в верхней половине окошка переменных среды).
нашел эти переменные в HKEY_CURRENT_USER\Environment , HKEY_USERS\.DEFAULT\Environment, HKEY_USERS\S-1-5-18\Environment, HKEY_USERS\S-1-5-19\Environment и т.д. (в HKEY_USERS их несколько подобных и как я понимаю на разных компах эти разделы отличаться будут...)
мне просто нужен универсальный рецепт так сказать, т.к. надо в батник прописать изменение этих ключей
Petya V4sechkin
20-10-2009, 13:09
нашел эти переменные в HKEY_CURRENT_USER\Environment
Ну да, это для текущего пользователя.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.