Не удаётся создать раздел реестра..

Тема в разделе "WASM.BEGINNERS", создана пользователем V1lko, 16 фев 2009.

  1. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    Написал простенький код:

    Код (Text):
    1. CCOUNTED_UNICODE_STRING "\\Registry\\Machine\\SOFTWARE\\CoolApp",sDriverKeyName,4
    2. ...
    3. ...
    4. ...
    5.       local oa:OBJECT_ATTRIBUTES
    6.       local hKey:HANDLE
    7.       local dwDisposition:DWORD
    8.       lea ecx,oa
    9.       InitializeObjectAttributes ecx,offset sDriverKeyName,OBJ_CASE_INSENSITIVE,NULL,NULL      
    10.       invoke ZwCreateKey,addr hKey,KEY_WRITE,addr oa,0,NULL,REG_OPTION_VOLATILE,addr dwDisposition
    11.       invoke ZwClose, hKey
    12. ...
    После выполнения раздел в реестре не создаётся :dntknw:
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    GetLastError что говорит?
     
  3. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Наводит смутные сомнения следующая строка:
    Я в Zw-функциях не разбираюсь, но чтоб создать раздел реестра, надо сначала открыть нужный улей (HKLM, HKCU и т. д.) функцией RegOpenKey, потом с помощью этой же функции надо последовательно открывать разделы (как каталоги), чтобы добраться до нужного (HANDLE будет все время меняться). И потом с конечным HANDLE с помощью какой-то Reg-функции создать нужный раздел / параметр.
    Может это и можно сделать указанными Zw-функциями. Но путь что-то странный.
     
  4. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    кофейная гуща показала что код выполняется в юзермоде.

    V1lko, код кста написал Four-F
     
  5. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    litrovith, кофейная гуща
    ошибается, код в драйвере.
     
  6. litrovith

    litrovith Member

    Публикаций:
    0
    Регистрация:
    20 июн 2007
    Сообщения:
    509
    V1lko, что же тогда не получается?
    Рабочий код, всё создаётся:
     
  7. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Раз не разбираешься, зачем бред пишешь?

    Нормальный путь.
     
  8. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    Работает. Хм... А если вместо Zw вызывать Nt функцию, ничего не измениться?
     
  9. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    V1lko
    вызывать надо ZW, а хучат NT :)
    ZW делают дополнительные проверки параметров, превиусмоде и т.д.
    ZW это обёртка для NT
     
  10. V1lko

    V1lko New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2009
    Сообщения:
    53
    wsd, ясно, спасибо :)
     
  11. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    Partner
    Хм... То есть 'Registry' - это название устройства чтоли?
     
  12. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    AndreyMust19
    Нет, это не устройство, а именно Registry.
    Реальный Registry имеет всего две ветки в корне - \Registry\Machine и \Registry\User
    Всякие HKLM, HKCU и прочее - это просто ссылки, а не реальные keys.