Показать полную графическую версию : [решено] 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
Вопрос не очень ясен - “прочитать "a"” откуда, а главное для чего?
Я вот только не знаю будет ли работать без перезагрузки? »
Что будет работать?
надо установить сразу без перезагрузки »
Что установить?
Если речь про переменные окружения, то так и спрашивайте - «Как задать переменную окружения?».
В этой библиотеке (http://creator-lab.ucoz.ru/load/3-1-0-49) есть функция:
_RegSetEnvironment("ProgramFiles", "New Path", 0, 0, 1)
“прочитать "a"” откуда, а главное для чего? »
>>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
>>ProgramFilesDir = a
>>ProgramFilesDir (x86) = b
Что будет работать? »
Интуиция подсказывает, что изменения вступят после перезагрузки, да и не только интуиция.
Ясное дело если заглянуть в реестр то там уже можно увидеть изменения переменных окружения.
Но вот будет ли их слушать коммандная строка!? Точно не будет!
Причём чтобы это проверить наверняка я тоже не знаю способ...
Скажем в реестре произошли изменения, но набрав в консоли 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 у меня с этой оперой всё гладко итак!
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/library/aa384187(en-us).aspx
Профиль потому туда и лезет, что Опера 32-битное приложение. Дело не только в переменных окружения но и в механизме перенаправления.
Профиль потому туда и лезет, что Опера 32-битное приложение. »
Это понятно.
DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1) »
Чтоли есть апи которые запрещают перенаправление?? Но хотя это подходит для создателей софта, я же не смогу вызвать эту api из командной строки либо скрипта, хотя было бы кстати! :)
Я когда затёр "лишние" переменные окружения, опера стала читать профиль "как положенно" из {pf64}, ибо а что ей остаётся делать когда других нет :)
А нельзя ли рестарт эксплорера зделать? Или LogOff юзера временно и опять войти, всмысле скриптом? Кстати, очень нужная вещь!
В эксплорере есть нажатие F5, а разве нет его замены внутриним вызовом? Как это в автоит зделать?...
я же не смогу вызвать эту api из командной строки либо скрипта »
Из скрипта, почему нет, предложенный DllCall Это и делает ;)
нельзя ли рестарт эксплорера зделать? »
ProcessClose("Explorer.exe") :)
В эксплорере есть нажатие F5, а разве нет его замены внутриним вызовом? Как это в автоит зделать? »
Я нечто подобное сделал в утилите Toggle Hidden Files & Files Extension (http://creator-lab.ucoz.ru/load/4-1-0-40).
Toggle Hidden Files & Files Extension. - это что-то удивительно интересное! +1
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.