Столкнулся с ситуацией в которой мой установщик не может установить программу в Win 8 (x64). Установщик использует переменные ТС (COMMANDER_PATH, COMMANDER_EXE и т.д.).
Решил проверить на простом батнике:
Запускаю его двойным кликом - переменные ТС присутствуют, запускаю его с правами администратора - переменные ТС отсутствуют.
Запуск в обоих случаях производился из запущенного ТС 8.01 RC4 (x64).
При аналогичных запусках в Win 7 (x64) переменные TC присутствуют в обоих случаях.
Это проблема (или особенность) винды. При запуске процесса с повышением он не наследует среду от процесса-предка, видимо в целях безопасности. У меня и на Win7 при запуске процесса с повышением из тотала переменные тотала исчезают. Удивляюсь, как у тебя они там могут быть. Может, они у тебя объявлены глобально?
MVV писал(а):Может, они у тебя объявлены глобально?
Это как?
1 Для этого их нужно таковыми сделать, а я ни чего подобного не делал.
2 Тогда они должны иметь некие фиксированные значения, а у меня в двух ТС (х64 и х86), запущенных одновременно, они имеют соответствующие (разные) значения.
Разница в поведении, мне кажется, объясняется тем, под какой учетной записью Вы входите в систему. Я вхожу под администратором, а Вы, очевидно, без прав администратора. Посему у меня ТС уже запущен от администратора и при запуске батника с админ правами переменные ТС наследуются.
Попробовал войти в систему без админ прав и получил Ваши результаты (переменные ТС не наследуются).
Я работаю под учетной записью администратора, при этом контроль учетных записей (UAC) включён. В таком режиме система по умолчанию запускает приложения без повышения, т.е. с правами пользователя, а если запрашивается повышение, то с полными правами. И при запуске процесса с повышением не происходит наследования параметров среды от процесса-предка, если у того меньше прав (т.е. если он запущен без повышения).
Кстати, при работе не из-под учетной записью администратора повышение недоступно, возможен лишь запуск от имени администратора (другого пользователя).