Запись/чтение реестра (assembler/Win API)

Тема в разделе "WASM.BEGINNERS", создана пользователем vitalik2388, 13 май 2010.

  1. vitalik2388

    vitalik2388 New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2009
    Сообщения:
    2
    Здравствуйте, уважаемые форумчане. Очень нужна ваша помощь в организации записи и чтения данных из реестра.
    Для начала помогите произвести запись значения DWORD в реестр. Пытаюсь создать подраздел реестра при помощи ф-ции RegCreateKey. Ничего не получается, ф-ция возвращает ошибку. Ну а о записи значения финкцией RegSetValue тогда вообще можно забыть.

    Файл WriteRegistry.inc
    include windows.inc
    include user32.inc
    include kernel32.inc
    include advapi32.inc
    include masm32.inc

    include C:\MASM32\MACROS\strings.mac

    includelib user32.lib
    includelib kernel32.lib
    includelib advapi32.lib
    includelib masm32.lib
    .data
    DefaultPort dw (1234)
    .data?
    CreateKeyHandle HANDLE ?

    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4. include WriteRegistry.inc
    5. .code
    6. start:
    7. invoke RegCreateKey,HKEY_LOCAL_MACHINE,$CTA0('SOFTWARE\SOCK4PROXY\KURS\VER1'), ADDR CreateKeyHandle
    8.         .if (eax!=ERROR_SUCCESS)
    9.             invoke MessageBox,NULL,$CTA0('Ошибка создания ветки реестра.'),NULL,MB_OK
    10.         .endif
    11. invoke RegSetValue,CreateKeyHandle,$CTA0('PORT'),REG_DWORD,ADDR DefaultPort,LENGTHOF DefaultPort
    12.          .if (eax!=ERROR_SUCCESS)
    13.             invoke MessageBox,NULL,$CTA0('Ошибка записи значения.'),NULL,MB_OK
    14.         .endif
    15. invoke ExitProcess, 0
    16. end start
    ЗАПУСКАТЬ ТОЛЬКО С ПРАВАМИ АДМИНИСТРАТОРА!!! ИНАЧЕ МОЖНО И НЕ ПЫТАТЬСЯ ПИСАТЬ В HKEY_LOCAL_MACHINE
    Прикреплен Radasm-проект
     
  2. vitalik2388

    vitalik2388 New Member

    Публикаций:
    0
    Регистрация:
    6 дек 2009
    Сообщения:
    2
    Прикрепленный файл
     
  3. Mankubus

    Mankubus New Member

    Публикаций:
    0
    Регистрация:
    14 авг 2009
    Сообщения:
    76
    vitalik2388

    Код (Text):
    1. SubKey db 'SOFTWARE\SOCK4PROXY\KURS\VER1',0
    2. CreateKeyHandle dd 0
    Код (Text):
    1. invoke RegCreateKey,HKEY_LOCAL_MACHINE,offset SubKey, offset CreateKeyHandle
    у меня все работает
     
  4. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Нуна.
     
  5. paralvic

    paralvic Пархоменко Александр Викторович

    Публикаций:
    0
    Регистрация:
    20 ноя 2010
    Сообщения:
    294
    Адрес:
    Нижний Новгород
    Ничего особенного.
    1. Используйте
    Код (Text):
    1. RegCreateKeyEx
    2. Есть русскоязычная документация по этой функции.

    Windows must die
     
  6. kernel16

    kernel16 Human Vl

    Публикаций:
    0
    Регистрация:
    29 окт 2010
    Сообщения:
    316
    invoke RegCloseKey, hKey
    неплохо бы было