Проблемы KEY_WOW64_64KEY и KEY_WOW64_32KEY

Тема в разделе "WASM.X64", создана пользователем vg, 3 фев 2010.

  1. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Вызов из 32-х битного приложения в x64
    Код (Text):
    1. invoke RegCreateKeyEx,iPart,addr szKey,0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS or KEY_WOW64_64KEY,0,addr hKey,0
    всегда возвращает ERROR_ACCESS_DENIED, при разных iPart и szKey. Пробовал на XP и 7. То же с KEY_WOW64_32KEY вместо KEY_WOW64_64KEY. Если обращаться к тем же ключам без KEY_WOW64_32KEY и KEY_WOW64_64KEY, то всё работает, с соответствующими ограничениями.
     
  2. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Телепатов тут нет - какие ключи? Назови полный путь для примера.
     
  3. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    HKEY_CURRENT_USER\Control Panel\Desktop
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer
    ... похоже любые
     
  4. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Можешь выложить минимальный бинарник – тогда посмотрим на 7ке сегодня вечером.
     
  5. d2k9

    d2k9 Алексей

    Публикаций:
    0
    Регистрация:
    14 сен 2008
    Сообщения:
    325
    Помню писал прогу на дельфи для доступа к Win64 ключам с помощью флага KEY_WOW64_64KEY - всё работало. Попробуй в манифест включить requireAdministrator.
     
  6. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Sol_Ksacap
    Добавляю бинарник, если ещё не поздно. Раньше не было возможности.
    d2k9
    requireAdministrator и указан.
     
  7. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    бинарник
     
  8. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    Solved. Неверные дефайны в инклудах.
    Код (Text):
    1. invoke RegCreateKeyEx,part,key,0,0,REG_OPTION_NON_VOLATILE,\
    2.                               KEY_ALL_ACCESS or KEY_WOW64_64KEY,0,addr hkey,0
    3.  
    4. KEY_ALL_ACCESS  == 0x0F003F
    5. KEY_WOW64_64KEY == 0x000100
    6.  
    7. В бинарнике же:
    8. push 0x0f007f
     
  9. vg

    vg New Member

    Публикаций:
    0
    Регистрация:
    16 апр 2007
    Сообщения:
    475
    Да, в masm32\include\windows.inc пропустили h в "KEY_WOW64_64KEY equ (0100)". С 0x000100 всё работает. Спасибо.