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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Environment Variables (http://forum.oszone.net/showthread.php?t=139589)

semiono 08-05-2009 05:24 1113446

Environment Variables
 
Под WinXP (x64) нужно установить a = b, то-есть прочитать "а" и присвоить для "b" такое же значение.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
ProgramFilesDir = a
ProgramFilesDir (x86) = b
Я вот только не знаю будет ли работать без перезагрузки? Или какие могут быть способы может уже известные?
Во-первых надо установить сразу без перезагрузки, а во-вторых надо чтоб так и осталось.
Ато кажись комманда консоли set делает это временно, или нет?
Но я сразу обращаюсь к автоит, так как в батниках там наверное не всё реализуешь толком...

да так и есть, только на время сеанса работает
http://www.ss64.com/nt/set.html

Creat0R 08-05-2009 07:13 1113465

Вопрос не очень ясен - “прочитать "a"” откуда, а главное для чего?

Цитата:

Цитата semiono
Я вот только не знаю будет ли работать без перезагрузки? »

Что будет работать?

Цитата:

Цитата semiono
надо установить сразу без перезагрузки »

Что установить?

Если речь про переменные окружения, то так и спрашивайте - «Как задать переменную окружения?».

В этой библиотеке есть функция:

Код:

_RegSetEnvironment("ProgramFiles", "New Path", 0, 0, 1)

semiono 09-05-2009 01:04 1114108

Цитата:

Цитата Creat0R
“прочитать "a"” откуда, а главное для чего? »

>>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
>>ProgramFilesDir = a
>>ProgramFilesDir (x86) = b
Цитата:

Цитата Creat0R
Что будет работать? »

Интуиция подсказывает, что изменения вступят после перезагрузки, да и не только интуиция.
Ясное дело если заглянуть в реестр то там уже можно увидеть изменения переменных окружения.
Но вот будет ли их слушать коммандная строка!? Точно не будет!
Причём чтобы это проверить наверняка я тоже не знаю способ...
Скажем в реестре произошли изменения, но набрав в консоли SET вижу всё как и было по старому.

Сосбсно, сабж конкретно в том что я ствлю Opera в WinXP x64, у меня это "своя сборка",
с настройками, чтобы профиль читался из програмной папки, а не из Application Data.
Но так как система имеет WOW64, то там всё разделяется включая даже програмные файлы...
Кароче ставлю оперу в X:\Program Files\Opera, запускаю её и вижу что настройки слетели,
немного подумав обнаруживаю, точно, профиль лезет сюда X:\Program Files (x86)\Opera\Profile
Я понимаю, что совет будет таков, что установить оперу в X:\Program Files (x86).
Но я не собираюсь идти на поводу у тех кто это всё придумал, вместо того чтобы зделать внутреннюю
проверку, они навязывают плодить дубликаты папок!
Ладно уж с syswow64 я смирился, тут уж ничего не изменить, но зато удалив переменную
ProgramFilesDir (x86) = всё сразу становиться на свои места. ;-
Тем более это редко кому надо бывает, кроме оперы я не замечал подобного.
Проблемма толко в том, что если удалить ProgramFilesDir (x86) из реестра, то оно для программ сработает
после перезагрузки только. Хотя можно конечно забить.
Кстати, я уже решил не уравнивать переменные ProgramFilesDir (x86) = ProgramFilesDir, а просто снести лишнюю ;-

Просто хочется зделать аккуратно и красиво, с WinXP x86 у меня с этой оперой всё гладко итак!

SyDr 09-05-2009 08:25 1114174

Цитата:

For Files, Windows has a special redirection mechanism for some system directories :

Directories 32-bit Value 64-Bit Value
@SystemDir @WindowsDir & "\SYSWOW64" @WindowsDir & "\System32"
@ProgramFilesDir {SystemDrive} & "\Program Files (x86)" {SystemDrive} & "\Program Files"

It is possible to access the 64-bit version of those directories by disabling the redirection mechanism.


DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1)
http://msdn.microsoft.com/ru-ru/libr...87(en-us).aspx

Профиль потому туда и лезет, что Опера 32-битное приложение. Дело не только в переменных окружения но и в механизме перенаправления.

semiono 09-05-2009 16:05 1114403

Цитата:

Цитата Sylver Dragon
Профиль потому туда и лезет, что Опера 32-битное приложение. »

Это понятно.
Цитата:

Цитата Sylver Dragon
DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1) »

Чтоли есть апи которые запрещают перенаправление?? Но хотя это подходит для создателей софта, я же не смогу вызвать эту api из командной строки либо скрипта, хотя было бы кстати! :)

Я когда затёр "лишние" переменные окружения, опера стала читать профиль "как положенно" из {pf64}, ибо а что ей остаётся делать когда других нет :)

А нельзя ли рестарт эксплорера зделать? Или LogOff юзера временно и опять войти, всмысле скриптом? Кстати, очень нужная вещь!
В эксплорере есть нажатие F5, а разве нет его замены внутриним вызовом? Как это в автоит зделать?...

Creat0R 09-05-2009 21:01 1114543

Цитата:

Цитата semiono
я же не смогу вызвать эту api из командной строки либо скрипта »

Из скрипта, почему нет, предложенный DllCall Это и делает ;)

Цитата:

Цитата semiono
нельзя ли рестарт эксплорера зделать? »

ProcessClose("Explorer.exe") :)

Цитата:

Цитата semiono
В эксплорере есть нажатие F5, а разве нет его замены внутриним вызовом? Как это в автоит зделать? »

Я нечто подобное сделал в утилите Toggle Hidden Files & Files Extension.

semiono 10-05-2009 14:49 1114923

Toggle Hidden Files & Files Extension. - это что-то удивительно интересное! +1


Время: 17:10.

Время: 17:10.
© OSzone.net 2001-