(статья) Переменные среды

Ответить
 • Просмотры: 2
Аватара пользователя
amel27

Re: (статья) Переменные среды

Сообщение amel27 »

Получается, что системные/локальные - это классификация по области видимости, а встроенные (aka расчётные)/пользовательские - по возможности напрямую создавать/изменять/удалять (в смысле без последствий Изображение ). Тогда USERNAME - это встроенная локальная... Возможно слишком вольно, зато логично. Хотя сочетание "Системная пользовательская" звучит несколько дико... Изображение
Аватара пользователя
Vadikan

Re: (статья) Переменные среды

Сообщение Vadikan »

amel27
Цитата:



Получается, что системные/локальные - это классификация по области видимости Тогда USERNAME - это встроенная локальная...



Да, получается так, и фактически локальные нельзя изменить, но тогда непонятно что означает
Цитата:



3. Локальные переменные куста HKEY_CURRENT_USER



Вероятно, в нашей классификации это должно быть так
Цитата:



В следующем списке представлены различные типы переменных в порядке убывания приоритета.

1. [Встроенные] локальные переменные

2. Системные переменные куста HKEY_LOCAL_MACHINE

3. Пользовательские переменные куста HKEY_CURRENT_USER



Изображение Поэтому я не стал это включать в статью... Это уже просто запредел. Хотя все-таки хотелось бы получить какой-то квалифицированный коментарий от МС Изображение



Добавил %PROGRAMFILES% и %COMMONPROGRAMFILES% в таблицу, хотя это похоже не совсем правильно. Там другие параметры реестра, и например setenv только импортирует в HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment и %PROGRAMFILES% не меняет, насколько я понял.



Короче, в параграфе Изменение реестра написал так


Цитата:



Пути, возвращаемые переменными %PROGRAMFILES% и %COMMONPROGRAMFILES%, можно изменить в параметрах ProgramFilesDir и CommonFilesDir в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion или через файл ответов.



Подутомила уже эта классификация Изображение
Аватара пользователя
amel27

Re: (статья) Переменные среды

Сообщение amel27 »

Цитата:



Да, получается так, и фактически локальные нельзя изменить



Почему нельзя? Некоторые можно, например TEMP.


Цитата:



Пути, возвращаемые переменными %PROGRAMFILES% и %COMMONPROGRAMFILES%, можно изменить в параметрах ProgramFilesDir и CommonFilesDir в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion или через файл ответов



Первый способ прямой, но запрещенный (для переименования каталога недостаточно), второй - правильный, но косвенный... Т.е. переменная является встроенной системной. Интересно как будет звучать этот же тезис для NUMBER_OF_PROCESSORS? Изображение
Аватара пользователя
amel27

Re: (статья) Переменные среды

Сообщение amel27 »

Цитата:



TEMP - либо системаная, либо пользовательская (HKCU\Environment), но не локальная. Добро пожаловать в клуб запутавшихся



В моей классификации противоречия нет: HKCU - это "локальная"; а "пользовательская" - значит создаваемая/изменяемая пользователем для своих нужд (даже если этот пользователь Администратор). Нелегитимные способы правки я бы вообще не выносил в статью, разве только в смысле "подсмотреть значение" (как это умеет делать Руссинович), остальное - на совести читателя. Изображение
Аватара пользователя
Petya V4sechkin

Re: (статья) Переменные среды

Сообщение Petya V4sechkin »

Vadikan


Цитата:



Пути, возвращаемые переменными %PROGRAMFILES% и %COMMONPROGRAMFILES%, можно изменить в параметрах ProgramFilesDir и CommonFilesDir в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion или через файл ответов.



Через файл ответов - можно.

После установки системы (через реестр) - не рекомендую. Когда-то проводил такой эксперимент, после этого не работает Outlook Express.



Поправка: то есть, некоторые программы привязываются к абсолютному пути, а некоторые - как раз к переменной %ProgramFiles% (что ставит эти программы в неудобное положение :)
Аватара пользователя
a1ex

Re: (статья) Переменные среды

Сообщение a1ex »

Vadikan


Цитата:



Вроде проясняется. Видимо, локальные переменные сидят в HKCU и больше нигде.



Вернулись к моему первому письму в этой ветке . Цитата из МС: Системные переменные среды определяют поведение глобальной среды операционной системы. Локальные переменные среды определяют поведение среды в данном экземпляре Cmd.exe. А где эти переменные сидят, это уже второй вопрос.


Цитата:



А что такое встроенные? Видимо те, что в HKLM лежат



как раз те, которые там не лежат. time, date


Цитата:



Даже если в HKLM зaгнать свою username, это не будет иметь эффекта.



если процесс будет запущен от имени системы, то системное username не будет переопредено и останется значение из HKLM, только какой в этом практический смысл Изображение.


Цитата:



TEMP - либо системаная, либо пользовательская (HKCU\Environment), но не локальная.



пользовательская т.к. прописана в HKCU. и локальная т.к. не имеет действия на все процессы ( если прописана в HKCU). Если прописана пользовательская, то она в конце концов переопределит системную при входе юзера. Если не прописана , то будет иметь значение системная.
Аватара пользователя
Vadikan

Re: (статья) Переменные среды

Сообщение Vadikan »

a1ex
Цитата:



Вернулись к моему первому письму в этой ветке . Цитата из МС: Системные переменные среды определяют поведение глобальной среды операционной системы. Локальные переменные среды определяют поведение среды в данном экземпляре Cmd.exe.



А Пуск - Выполнить тоже является частью командной оболочки?
Цитата:



А где эти переменные сидят, это уже второй вопрос.



Но очень интересный Изображение


Цитата:



[Temp] - пользовательская т.к. прописана в HKCU. и локальная т.к. не имеет действия на все процессы ( если прописана в HKCU).



Т.е. пользователсьскя = локальная, так?



Petya V4sechkin
Цитата:



Через файл ответов - можно. После установки системы (через реестр) - не рекомендую. Когда-то проводил такой эксперимент, после этого не работает Outlook Express.



Да, ну я же сказал, софт может не работать Изображение Надо тогда просто сказать


Цитата:



Пути, возвращаемые переменными %PROGRAMFILES% и %COMMONPROGRAMFILES%, можно задать через файл ответов.



Вроде корректно - переменную мы не меняем. Так они все-таки локальные или системные? Изображение)
Аватара пользователя
amel27

Re: (статья) Переменные среды

Сообщение amel27 »

Цитата:



Т.е. пользователсьскя = локальная, так?



Перед любой классификацией нужно сначала определиться с критериями, тогда будет сложно запутаться независимо от названий.



Итак, если критерий - область видимости, тогда имеем: системные
, локальные сессии, локальные процесса. Программисты подтвердят, что перекрытие имен - вполне штатная ситуация.



Упоминание о "встроенных" переменных наводит на мысль, что должны быть и "не встроенные", здесь скорее всего идет речь о возможности изменять значение этих переменных, т.е. о "владельце" этих переменных - либо это система ("встроенные"), либо пользователь ("???"). Последние ИМХО вполне логично назвать "пользовательскими", хотя с HKCU это никак не связано, т.к. админ может создать свою (т.е. пользовательскую) переменную и в HKLM.



Понятно, что такая классификация идет вразрез со справкой и даже противоречит здравому смыслу, т.к. правильней было бы назвать глобальные/локальные и системные/пользовательские соответственно...
Аватара пользователя
amel27

Re: (статья) Переменные среды

Сообщение amel27 »

Цитата:




Цитата:



А где эти переменные сидят, это уже второй вопрос.



Но очень интересный



Конечно, можно и этот критерий поставить в основание классификации, но придется учесть что кроме HKLM и HKCU есть еще HKU\.DEFAULT (профиль учетной записи SYSTEM), а также переменные, которые вовсе не хранятся в реестре (расчетные). С учетом всех четырех вариантов называть первые две "Системными" и "Пользовательскими" ИМХО было бы нелогично.
Аватара пользователя
a1ex

Re: (статья) Переменные среды

Сообщение a1ex »

Vadikan


Цитата:



Т.е. пользователсьскя = локальная, так?



ну да, она же не расространяется на все процессы в системе
Ответить

Вернуться в «Автоматическая установка Windows 2000/XP/2003»