Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Программы создают папки %userprofile% рядом со своим исполняемым файлом (http://forum.oszone.net/showthread.php?t=232527)

iDrug 10-04-2012 20:39 1897232

Программы создают папки %userprofile% рядом со своим исполняемым файлом
 
Здравствуйте, использовал какое-то время рам-диск (пока не кончился трайл период).
Пока он работал - я менял пути переменных сред %temp% и %tmp% перенаправляя их на рамдиск.

Теперь же, когда рамдиском более не пользуюсь - вернул пути для %temp% и %tmp% в %USERPROFILE%\AppData\Local\Temp
теперь же у меня рядом с любым *.exe файлом софта, который я запускаю и который использует temp папку - создаётся папка %USERPROFILE% внутри которой лежит папка AppData, а внутри неё Local, а внутри неё Temp, куда софт и записывает свои временные файлы.

Помогите исправить это.
Когда в проводники в адресе вписываю %userprofile% и жму энтер - редиректит куда надо.

agent_smax 10-04-2012 21:00 1897243

Остальные переменные у вас имеют правильные пути?

iDrug 10-04-2012 21:19 1897256

да.
в общем рестартнул комп, удалил записи о переменных temp и tmp, создал заново указав в %USERPROFILE%\AppData\Local\Temp
стало отображаться как C:\Пользователи\Логин\AppData\Local\Temp
Потом закрыл-открыл тот диалог и уже там вижу снова %USERPROFILE%\AppData\Local\Temp

Dark voodoo sh1t.

Petya V4sechkin 10-04-2012 21:28 1897265

iDrug, в разделе реестра HKEY_CURRENT_USER\Environment типы параметров TEMP и TMP должны быть REG_EXPAND_SZ.

iDrug 11-04-2012 06:50 1897401

Petya V4sechkin, хм, возможно это как раз и было причиной моих глюков.
Я использовал reg-файл для восстановления значений:
Код:

Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Environment]
"TEMP"="%USERPROFILE%\\AppData\\Local\\Temp"
"TMP"="%USERPROFILE%\\AppData\\Local\\Temp"

Вы по нему можете сказать - какого типа создадутся параметры если применить этот рег-файл?

Iska 11-04-2012 07:00 1897403

Цитата:

Цитата iDrug
Вы по нему можете сказать - какого типа создадутся параметры если применить этот рег-файл? »

«REG_SZ».

«REG_EXPAND_SZ» в reg-файле представляется в виде hex-значений, наподобие:
читать дальше »
Код:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Environment]
"TEMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,\
  00,45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,\
  74,00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00
"TMP"=hex(2):25,00,55,00,53,00,45,00,52,00,50,00,52,00,4f,00,46,00,49,00,4c,00,\
  45,00,25,00,5c,00,4c,00,6f,00,63,00,61,00,6c,00,20,00,53,00,65,00,74,00,74,\
  00,69,00,6e,00,67,00,73,00,5c,00,54,00,65,00,6d,00,70,00,00,00



P.S. Не используйте приведённый мною код, он под Windows XP.

iDrug 11-04-2012 17:48 1897792

Цитата:

Цитата Iska
P.S. Не используйте приведённый мною код, он под Windows XP. »

имеется в виду, что пути дефолтные для ХР? т.е. если я свои пути закодирую в хексовый вид - всё будет ок?

Vadikan 11-04-2012 18:17 1897808

iDrug, не надо ничего кодировать. Система поймет и REG_SZ. Но если вы хотите использовать переменные среды, то создайте в реестре REG_EXPAND_SZ и экспортируйте данные.

См. [решено] Создание в реестре расширенного строкового параметра REG_EXPAND_SZ, в т.ч. пост 8.

iDrug 11-04-2012 18:58 1897823

Vadikan, ок, спасибо.
Ещё 2 мелких вопроса:
1. полученный файл имеет 2 пустых строки в конце - это обязательно?
2. через соответствующее диалоговое меню изменил пути TMP файлов на R:\Temp, затем полез в реестр чтобы экспортировать ту ветку реестра (хочется иметь 2 рег файлика, чтобы быстро менять путь временной папки с дефолта на рамдиск и обратно), а созданные там параметры создались как REG_SZ. Это нормально? это из-за того, что в пути отсутствуют переменные?

Vadikan 11-04-2012 22:24 1897907

iDrug,
1. Нет.
2. Да. Да.

Iska 11-04-2012 22:31 1897912

Цитата:

Цитата Vadikan
iDrug, не надо ничего кодировать. Система поймет и REG_SZ. »

Это уже зависит от конкретного приложения — будет ли оно пытаться разворачивать переменные окружения в TEMP/TMP. Как видно по результатам выше — лучше на это не надеяться, а вернуть туда «REG_EXPAND_SZ».


iDrug, если Вам надо временно, для какого-либо приложения, изменить переменные окружения — нет никакой необходимости в правке реестра. Создайте пакетный файл следующего вида:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set TEMP=R:\Temp
set TMP=R:\Temp

start "" "%SystemRoot%\System32\notepad.exe"

endlocal
exit /b 0

где «%SystemRoot%\System32\notepad.exe» — путь к исполняемому файлу приложения, в данном случае — Блокноту. Переменные окружения «TEMP» и «TMP» будут изменены для него и порождённых им процессов. Систему же эти изменения не затронут.

iDrug 12-04-2012 06:12 1898031

Iska, не, мне нужно временно, но для всех приложений.
В принципе, вопрос уже решён, спасибо.


Время: 03:42.

Время: 03:42.
© OSzone.net 2001-