|
В реестр в Wow6432Node записать строку содержащую %ProgramFiles% без кавычек.
|
|||
---|---|---|---|
#18+
Есть функция, кот. пользуюсь без проблем и долго. (есть аналогичная для REG_EXPAND_SZ, но баг одинаковый) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
Основной смысл reg64=true -> с флагом KEY_WOW64_64KEY (т.е. всегда будет 64-битное представление реестра) reg32=true -> с флагом KEY_WOW64_32KEY (т.е. всегда будет 32-битное представление реестра, ветки Wow6432Node) И понадобилось мне записать в 32-битное представление нечто типа %ProgramFiles%\Proga\proga.exe причем именно так как написано 1) без кавычек 2) содержит слово %ProgramFiles% вот именно так как написано. Естественно без вариантов reg32=true (KEY_WOW64_32KEY), иначе не туда запишет (либо без флагов если 32-бит App). Он гад мне пишет Код: vbnet 1.
Делаю тупой тест, просто в Current User (где редиректов нет вообще) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Я пока не могу понять какая именно автоматика так "гадит". Понятно, что %ProgramFiles% и %ProgramFiles(x86)% это переменные среды, но моя задача просто записать строку в реестр (без умничаний). Т.е. не поставишь KEY_WOW64_64KEY , будет искажать строчку а поставишь, запишет не в ту ветку если ветка имеет 2 представления, а надо именно в 32-битную. Как обойти? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 03:51 |
|
В реестр в Wow6432Node записать строку содержащую %ProgramFiles% без кавычек.
|
|||
---|---|---|---|
#18+
Ну конечно накуролесили они с этими редиректами, каждый раз узнаешь что-то новое: Registry Redirector редиректоры хреновыTo help 32-bit applications that write REG_SZ or REG_EXPAND_SZ data containing %ProgramFiles% or %commonprogramfiles% to the registry, WOW64 intercepts these write operations and replaces them with "%ProgramFiles(x86)%" and "%commonprogramfiles(x86)%". For example, if the Program Files directory is on the C drive, then "%ProgramFiles(x86)%" expands to "C:\Program Files (x86)". The replacement occurs only if the following conditions are met: •The string must begin with %ProgramFiles% or %commonprogramfiles%. If the string begins with a space or any character other than %, it is not replaced. •The case of %ProgramFiles% or %commonprogramfiles% must be exactly as shown because the string comparison is case-sensitive. For example, if the string begins with %CommonProgramFiles% instead of %commonprogramfiles%, it is not replaced. Но обойти таки можно, хотя они же не рекомендуют явно указывать WOW6432Node, но других вариантов походу нет. KEY_WOW64_64KEY отменит правило замены, а явное WOW6432Node таки ткнет в 32-битную ветку. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9.
sys_x64 =True ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 04:46 |
|
В реестр в Wow6432Node записать строку содержащую %ProgramFiles% без кавычек.
|
|||
---|---|---|---|
#18+
Страшно подумать, что будет при переходе на 128-битную версию ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 18:10 |
|
В реестр в Wow6432Node записать строку содержащую %ProgramFiles% без кавычек.
|
|||
---|---|---|---|
#18+
Cat2, что уже объявили о выходе x128? Бардак там будет. Как бы счас копался в куче OS в реестрах, от Win7 до 10 с оглядкой на висту, узнал много интересного. 1)Напр. в Висте многие ветки 32 и 64 менялись независимо, начиная с Win7 меняешь в 32, меняется в 64 и наоборот. 2) Другие ветки наоборот раньше зеркалились, а сейчас пишется только в 64 3) игрушки с переменными окружения, с чего тему начал, это нечто, это далеко не всегда надо, чтоб это навязывать 4) с Win8.0 появилась тенденция к ключам вида REG_SZ C:\Windows\System32\... либо REG_SZ C:\Windows\SysWOW64\... Может ли Windows >=8.0 быть установлен не на C: (отображаемая буква а не раздел)? 5) Из 32-бит App нереально поменять права/владельца (то бишь даклы и каклы если по простому) для 64-ветки, а вот мне напр. ну оч не хочется компилировать код в x64, хотя в целом я стараюсь писать 32/64 совместимый код/логику, но оч. редко делаю код 64, Any CPU не доверяю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 21:17 |
|
В реестр в Wow6432Node записать строку содержащую %ProgramFiles% без кавычек.
|
|||
---|---|---|---|
#18+
Дмитрий77, >ну оч не хочется компилировать код в x64, хотя в целом я стараюсь писать 32/64 совместимый код/логику, но оч. редко делаю код 64, Хочется-не хочется, а приходится ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 21:44 |
|
В реестр в Wow6432Node записать строку содержащую %ProgramFiles% без кавычек.
|
|||
---|---|---|---|
#18+
Лучше вообще ничего не писать в Program Files... Для игрушек лучше что-то типа D:\Games, а для своих поделок C:\<Имя поделки_без_пробелов>\... И проблем сразу поубавиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 21:49 |
|
В реестр в Wow6432Node записать строку содержащую %ProgramFiles% без кавычек.
|
|||
---|---|---|---|
#18+
d7iЛучше вообще ничего не писать в Program Files... Для игрушек лучше что-то типа D:\Games, а для своих поделок C:\<Имя поделки_без_пробелов>\... И проблем сразу поубавиться. а почему не "имя файла не более 8 букв"? ))) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 22:48 |
|
В реестр в Wow6432Node записать строку содержащую %ProgramFiles% без кавычек.
|
|||
---|---|---|---|
#18+
Дмитрий77Cat2, что уже объявили о выходе x128? Бардак там будет. Оси пока нет, но видеокарты уже есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 07:34 |
|
|
start [/forum/topic.php?fid=20&msg=39624360&tid=1399440]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 162ms |
0 / 0 |