Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] странный возврат макроса @TempDir

Ответить
Настройки темы
[решено] странный возврат макроса @TempDir

Ветеран


Сообщения: 903
Благодарности: 161


Конфигурация

Профиль | Отправить PM | Цитировать


Изменения
Автор: saavaage
Дата: 20-10-2010
суть проблемы:
1. вношу твиками новые значение для путей к папкам временных файлов (Temp) и переменных сред (Tmp):
а)Temp (например, путь D:\1)
Код:
Код: Выделить весь код
$Input_MyTemp = 'D:\1'
RunWait(@COMSPEC & ' /c Echo Y | Cacls ' & $Input_MyTemp&' /E /P "Все":F', '', @SW_HIDE)
       RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'TEMP', 'REG_SZ', $Input_MyTemp)
;~     RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\Session Manager\Environment', 'TEMP', 'REG_SZ', $Input_MyTemp)
       RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment', 'TEMP', 'REG_SZ', $Input_MyTemp)
       RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\Environment', 'TEMP', 'REG_SZ', $Input_MyTemp)
       RegWrite('HKEY_CURRENT_USER\Environment', 'TEMP', 'REG_SZ', $Input_MyTemp)
б) Tmp (например, D:\Tweaks):
Код:
Код: Выделить весь код
$Input_MyTmp ='D:\Tweaks'
RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'TMP', 'REG_SZ', $Input_MyTmp)
;~    RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\Session Manager\Environment', 'TMP', 'REG_SZ', $Input_MyTmp)
      RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment', 'TMP', 'REG_SZ', $Input_MyTmp)
      RegWrite('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager\Environment', 'TMP', 'REG_SZ', $Input_MyTmp)
      RegWrite('HKEY_CURRENT_USER\Environment', 'TMP', 'REG_SZ', $Input_MyTmp)
2. Логично ожидать получение следующего результата -пути для:
а) Temp - D:\1
б) Tmp - D:\Tweaks

3. В итоге получаем:
Реестр - все согласно твиков
Панель управления -> Система -> Дополнительно -> Переменные среды - все согласно твиков
Вызов Msgbox (0, '', @TempDir) упорно возвращает D:\Tweaks...

Не понимаю, что я сделал не так???

PS Папки Temp и Tmp уже созданы.

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 09:51, 20-10-2010

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


saavaage, как и здесь: #4, текущий процесс уже имеет установленную среду. Это раз. Второе — данные параметры считываются из реестра при старте ОС/входе пользователя в систему соответственно, так что, банально сделать запись в реестр недостаточно. В некоторые Resource Kit'ы входит утилита «setx.exe», одно из применений которой — задание переменных окружения (опять же, только для вновь создаваемых процессов) с сохранением в профиле [читай, реестре] системы/текущего пользователя. Как выполнить уведомление о произведённых изменениях в реестре смотрите в самом конце статьи Environment Variables (Windows):
читать дальше »
Цитата:

Calling SetEnvironmentVariable has no effect on the system environment variables. To programmatically add or modify system environment variables, add them to the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment registry key, then broadcast a WM_SETTINGCHANGE message with lParam set to the string "Environment". This allows applications, such as the shell, to pick up your updates.
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:13, 20-10-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 903
Благодарности: 161

Профиль | Отправить PM | Цитировать


Cпасибо большое, пошел курить маны...

И все-таки, непонятно, почему макрос отображает не просто старое значение, а неверное значение (я менял и Temp и Tmp и он отображает, именно, новый путь к Tmp, вместо старого пути к Temp ("С:\Temp"))...

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 15:18, 20-10-2010 | #3


Ветеран


Сообщения: 903
Благодарности: 161

Профиль | Отправить PM | Цитировать


итак, на настоящий момент выяснил следующее:

1. макрос @TempDir должен отображать путь к папке временных файлов, считанный системой при ее загрузке. Т.е. при изменении в входе сессии пользователем, все равно, отображаются старые значения.

2. при разных путях к Temp и Tmp макрос @TempDir отображает путь к Tmp, игнорируя Temp. Даже после перезагрузки он стандартно отображает путь к Tmp, а не к моей папке временных файлов Temp.

3. Складывается ощущение, что макрос изначально выдает информацию именно по Tmp, а не Temp. Проверить быстро не могу, т.к. у меня изначально винда ставится с одинаковым путем и для Temp и Tmp...

PS Во избежания эффекта "кривых ручек" для задания новых значений Temp и Tmp применял вполне официальную утилиту setenv.exe. Эффект - аналогично эффекту вноса через твики (в шапке).

Если возможно, уважаемые гуру, отпишитесь баг ли это и если нет, то в чем я не прав...

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 18:30, 20-10-2010 | #4


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


Путь то есть а папки нет - надо создать папку ...

Отправлено: 21:24, 20-10-2010 | #5


Ветеран


Сообщения: 903
Благодарности: 161

Профиль | Отправить PM | Цитировать


FlatX007, ну я не такой дремучий... Папка уже создана, просто в примере я этого не указывал, думал, что это очевидно... Шапку поправил.

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 23:55, 20-10-2010 | #6


Аватара для FlatX007

Ветеран


Сообщения: 553
Благодарности: 87

Профиль | Отправить PM | Цитировать


тут все папки ...

Код: Выделить весь код
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders

Отправлено: 00:14, 21-10-2010 | #7


Ветеран


Сообщения: 903
Благодарности: 161

Профиль | Отправить PM | Цитировать


FlatX007,
считать информацию можно (так или иначе), вопрос в том, что у меня в скрипте (утилита SmartXP) много завязано на создании файлов и их подхвате через переменную @TempDir и меня эта ситуация (с некорректным возвратом), очень сильно напрягает. Да и на будущее, этот вопрос необходимо "дожать".

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 00:21, 21-10-2010 | #8


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата FlatX007:
тут все папки ...
Код: Выделить весь код
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders
: Длинная и печальная история ключа Shell Folders. Я сам этим ранее пользовался.

Цитата saavaage:
2. при разных путях к Temp и Tmp макрос @TempDir отображает путь к Tmp, »
У меня — путь из пользовательской «%tmp%». Версия AutoIt 3.3.4.0. Ну и что? По всем рекомендациям и унаследованная переменная окружения TMP, и более новая TEMP обязаны указывать в одно и то же местоположение: папку временных файлов. Сам AutoIt пользует TMP. Про GetTempPath, для личных нужд, Вам уже сказали. А зачем Вам «setenv»? Вы пробовали после записи в реестр разослать широковещательное сообщение с WM_SETTINGCHANGE?
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:21, 21-10-2010 | #9


Ветеран


Сообщения: 903
Благодарности: 161

Профиль | Отправить PM | Цитировать


Iska, для чего тогда в панели управления и реестре предусмотрена возможность задания разных путей для Tmp и Temp?
Цитата Iska:
А зачем Вам «setenv»? »
только для одного - хочу, чтобы настройки вступали в строй не после перезагрузки системы, а сразу.

PS у меня и Tmp и Temp имеют одно и тоже месторасположение, но как с этим у других юзеров я могу только догадываться...

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 06:24, 21-10-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] странный возврат макроса @TempDir

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBS/WSH/JS - Открытие htm файла в Excel'e и применение к нему макроса foxintel Скриптовые языки администрирования Windows 0 13-04-2010 03:40
2003/XP/2000 - [решено] Excel | Отмена изменений после макроса AlexM Microsoft Office (Word, Excel, Outlook и т.д.) 3 07-02-2010 03:19
Разное - Возврат ПО djeff Лицензирование продуктов Microsoft 6 17-04-2009 11:37
[решено] Возврат DC в домен Jekael Microsoft Windows NT/2000/2003 10 26-11-2007 10:34
Возврат к предыдущей версии Birdy Хочу все знать 10 24-05-2005 06:35




 
Переход