Почему %TEMP% разрешается в недетерминированный путь вида %TEMP\‹цифра›?

У меня 32-разрядная версия Windows Server 2008, и когда я набираю %temp%, я перенаправляюсь в ..AppData\Local\Temp\1\ или ..AppData\Local\Temp\2 вместо ..AppData\Local\Temp

Я уже проверил переменные среды, и они в порядке.

Я спрашиваю об этом, потому что у меня есть приложение, которое должно копировать файлы в %temp%\my application, а вместо этого оно копирует файлы в %temp%\1\my application

У кого-нибудь есть решение для этого?


person shacharsa    schedule 29.06.2011    source источник


Ответы (2)


Объяснение, обсуждение, обходные пути и т. д. — все в статье Old New Thing Почему имя моего каталога TEMP постоянно меняется? Это гарантирует, что несколько сеансов служб терминалов для одного и того же пользователя не будут (по умолчанию) совместно использовать временный каталог.

Проблема заключалась в Административные шаблоны\Компоненты Windows\Службы терминалов \Временные папки групповая политика. Если вы не выберете Не использовать временные папки для каждого сеанса, будут созданы эти подкаталоги TEMP. Существует также статья базы знаний, в которой описываются разделы реестра, лежащие в основе этих групповых политик.

Лично я считаю первый комментарий в ответ самым полезным:

Какая разница, если временная локация все равно прыгает, это временно!

Смотрите также

person Damien_The_Unbeliever    schedule 29.06.2011
comment
спасибо, теперь я это понимаю... я изменил целевую папку вместо папки %temp% - person shacharsa; 30.06.2011
comment
Какая разница, если он изменится? Потому что иногда две программы должны встречаться через файл в каталоге TEMP. Невозможность предсказать значение усложняет задачу. - person e40; 25.07.2013
comment
@ e40 - если две программы работают в одной и той же сессии, они будут наблюдать одно и то же значение. Если две программы работают в разных сеансах, то любое взаимодействие между ними, вероятно, является ошибкой. - person Damien_The_Unbeliever; 25.07.2013
comment
Я столкнулся со случаем, когда я получил временную папку /2, но почему-то Windows не создает эту папку. Итак, куча вещей начинает выходить из строя. Некоторые приложения, такие как Process Explorer, даже не запускаются, поскольку извлекаются и запускаются из временной папки. - person Rick Strahl; 10.03.2016
comment
Это было странно, чтобы попробовать и Google, но я рад, что нашел ответ. - person codaamok; 17.11.2016

Переменные среды имеют 4 контекста:

(нажмите Win+R, затем введите regedit, чтобы найти указанные ниже пути)

  1. Системные переменные (HKLM\System\CurrentControlSet\Control\Session Manager\Environment)
  2. Пользовательские переменные (HKCU\Environment)
  3. Переменные процесса (не сохраняются в реестре)
  4. Неустойчивые переменные (HKCU\VolatileEnvironment)

ссылка: https://rakhesh.com/windows/temp-environment-variable-has-a-2-or-other-number-after-it/

Если групповая политика Do not use temporary folders per session не настроена или для нее не задано значение Enabled, система создаст две переменные Volatile Environment TEMP и TMP с тем же значением переменной TEMP текущего пользователя с добавлением возрастающего числа в конце Папка TEMP (увеличивается каждый раз, когда пользователь входит в систему, подробности см. в ответе @Damien)

Если вы включите групповую политику Do not use temporary folders per session, такого поведения не будет.

person Uentee    schedule 08.03.2019