Переменные ТС в Win 8

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

Ответить
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Переменные ТС в Win 8

Сообщение gora »

Столкнулся с ситуацией в которой мой установщик не может установить программу в Win 8 (x64). Установщик использует переменные ТС (COMMANDER_PATH, COMMANDER_EXE и т.д.).
Решил проверить на простом батнике:

Код: Выделить всё

@Echo Off
Set
Pause
Запускаю его двойным кликом - переменные ТС присутствуют, запускаю его с правами администратора - переменные ТС отсутствуют.
Запуск в обоих случаях производился из запущенного ТС 8.01 RC4 (x64).

При аналогичных запусках в Win 7 (x64) переменные TC присутствуют в обоих случаях.

Чья это проблема? И как можно ее решить?
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Это проблема (или особенность) винды. При запуске процесса с повышением он не наследует среду от процесса-предка, видимо в целях безопасности. У меня и на Win7 при запуске процесса с повышением из тотала переменные тотала исчезают. Удивляюсь, как у тебя они там могут быть. Может, они у тебя объявлены глобально?
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

MVV писал(а):Может, они у тебя объявлены глобально?
Это как?
1 Для этого их нужно таковыми сделать, а я ни чего подобного не делал.
2 Тогда они должны иметь некие фиксированные значения, а у меня в двух ТС (х64 и х86), запущенных одновременно, они имеют соответствующие (разные) значения.

http://gora.7zsfx.info/test/varTC.PNG
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Локальные переменные могут перекрывать глобальные. В двух админских консолях, запущенных из разных тоталов, тоже разные?
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

MVV писал(а):В двух админских консолях, запущенных из разных тоталов, тоже разные?
Они и показаны на скриншоте. Оба батника запущены "от имени администратора" в разных TC
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Обычно CMD при запуске с повышением пишет в заголовке префикс Администратор:, чего не видно ни у одного из изображенных на скриншоте.
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

MVV писал(а):CMD при запуске с повышением пишет в заголовке префикс Администратор
gora писал(а):Оба батника
Запуск cmd.exe "от имени администратора" из ТС не меняет ни чего. Переменные ТС есть.
Могу сделать скриншот, если есть сомнения.
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

У меня в 7 переменные не наследуются, если запускаю батник с повышением.

Код: Выделить всё

@echo off
set c
pause
Аватара пользователя
gora
Сообщения: 442
Зарегистрирован: Чт дек 30, 2004 13:09
Откуда: Иваново

Сообщение gora »

MVV писал(а):У меня в 7 переменные не наследуются
Разница в поведении, мне кажется, объясняется тем, под какой учетной записью Вы входите в систему. Я вхожу под администратором, а Вы, очевидно, без прав администратора. Посему у меня ТС уже запущен от администратора и при запуске батника с админ правами переменные ТС наследуются.
Попробовал войти в систему без админ прав и получил Ваши результаты (переменные ТС не наследуются).
Win7 SP1 Ultimate x64, TC8.52a x64
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Я работаю под учетной записью администратора, при этом контроль учетных записей (UAC) включён. В таком режиме система по умолчанию запускает приложения без повышения, т.е. с правами пользователя, а если запрашивается повышение, то с полными правами. И при запуске процесса с повышением не происходит наследования параметров среды от процесса-предка, если у того меньше прав (т.е. если он запущен без повышения).

Кстати, при работе не из-под учетной записью администратора повышение недоступно, возможен лишь запуск от имени администратора (другого пользователя).
Ответить