Страница 1 из 1
Переменные ТС в Win 8
Добавлено: Чт июл 19, 2012 12:06
gora
Столкнулся с ситуацией в которой мой установщик не может установить программу в Win 8 (x64). Установщик использует переменные ТС (COMMANDER_PATH, COMMANDER_EXE и т.д.).
Решил проверить на простом батнике:
Запускаю его двойным кликом - переменные ТС присутствуют, запускаю его с правами администратора - переменные ТС отсутствуют.
Запуск в обоих случаях производился из запущенного ТС 8.01 RC4 (x64).
При аналогичных запусках в Win 7 (x64) переменные TC присутствуют в обоих случаях.
Чья это проблема? И как можно ее решить?
Добавлено: Чт июл 19, 2012 14:51
MVV
Это проблема (или особенность) винды. При запуске процесса с повышением он не наследует среду от процесса-предка, видимо в целях безопасности. У меня и на Win7 при запуске процесса с повышением из тотала переменные тотала исчезают. Удивляюсь, как у тебя они там могут быть. Может, они у тебя объявлены глобально?
Добавлено: Чт июл 19, 2012 16:26
gora
MVV писал(а):Может, они у тебя объявлены глобально?
Это как?
1 Для этого их нужно таковыми сделать, а я ни чего подобного не делал.
2 Тогда они должны иметь некие фиксированные значения, а у меня в двух ТС (х64 и х86), запущенных одновременно, они имеют соответствующие (разные) значения.
http://gora.7zsfx.info/test/varTC.PNG
Добавлено: Чт июл 19, 2012 19:12
MVV
Локальные переменные могут перекрывать глобальные. В двух админских консолях, запущенных из разных тоталов, тоже разные?
Добавлено: Чт июл 19, 2012 19:19
gora
MVV писал(а):В двух админских консолях, запущенных из разных тоталов, тоже разные?
Они и показаны на скриншоте. Оба батника запущены "от имени администратора" в разных TC
Добавлено: Чт июл 19, 2012 20:36
MVV
Обычно CMD при запуске с повышением пишет в заголовке префикс Администратор:, чего не видно ни у одного из изображенных на скриншоте.
Добавлено: Чт июл 19, 2012 20:47
gora
MVV писал(а):CMD при запуске с повышением пишет в заголовке префикс Администратор
gora писал(а):Оба батника
Запуск
cmd.exe "от имени администратора" из ТС не меняет ни чего. Переменные ТС есть.
Могу сделать скриншот, если есть сомнения.
Добавлено: Пт июл 20, 2012 16:19
MVV
У меня в 7 переменные не наследуются, если запускаю батник с повышением.
Добавлено: Сб июл 21, 2012 07:32
gora
MVV писал(а):У меня в 7 переменные не наследуются
Разница в поведении, мне кажется, объясняется тем, под какой учетной записью Вы входите в систему. Я вхожу под администратором, а Вы, очевидно, без прав администратора. Посему у меня ТС уже запущен от администратора и при запуске батника с админ правами переменные ТС наследуются.
Попробовал войти в систему без админ прав и получил Ваши результаты (переменные ТС не наследуются).
Добавлено: Сб июл 21, 2012 11:28
MVV
Я работаю под учетной записью администратора, при этом контроль учетных записей (UAC) включён. В таком режиме система по умолчанию запускает приложения без повышения, т.е. с правами пользователя, а если запрашивается повышение, то с полными правами. И при запуске процесса с повышением не происходит наследования параметров среды от процесса-предка, если у того меньше прав (т.е. если он запущен без повышения).
Кстати, при работе не из-под учетной записью администратора повышение недоступно, возможен лишь запуск от имени администратора (другого пользователя).