Assembler ключи в реестре?

Тема в разделе "WASM.BEGINNERS", создана пользователем niccolo, 20 июл 2007.

  1. niccolo

    niccolo New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    3
    Уважаемые специалисты и знатоки, прошу не пинать ноггами, а помочь в разрешении некоторых проблемных вопросов:
    Я остановился на MASM32
    1). Где найти хорошую инфу с описанием кодов ошибок на русском, ибо английский компьютерный слэнг мне не понятен?
    2).
    invoke RegCreateKey,HKEY_LOCAL_MACHINE, ADDR SubKey,ADDR hKey
    .if !eax
    invoke RegSetValueEx,hKey,ADDR szznak,0,REG_SZ,ADDR sz12345,4

    Я не сразу понял, что 4 надо заменить на 5, иначе в реестр попадёт "1234"
    a). Где найти инфу о том когда, как и зачем делать такие указания длины?
    b). sz - означает тип вводимого параметра? Тогда где найти подробную инфу о других, как ввести параметр типа "dword", а как типа "hex", "строковой параметр" и т. д.

    3). Вот рабочий под masm 32 код:
    Код (Text):
    1. ++++++++++++++++++++++++++++++++++
    2. .386
    3. .model flat, stdcall
    4. option casemap :none   ; case sensitive
    5.  
    6.     include \masm32\include\windows.inc
    7.     include \masm32\include\user32.inc
    8.     include \masm32\include\kernel32.inc
    9.     include \masm32\include\advapi32.inc
    10.     includelib \masm32\lib\user32.lib
    11.     includelib \masm32\lib\kernel32.lib
    12.     includelib \masm32\lib\advapi32.lib
    13.  
    14. .data
    15.     SubKey     db "Software\_AZL\Andreyka\",0
    16.     szznak     db "znak",0
    17.     szCaption  db "Строка в окне",0
    18.     szNoRun    db "Вы ещё не запускали меня!",13,10
    19.                db "Я внесу измененя в реестр",0
    20.     szHasRun   db "Глуый ты человек, не надо запускать меня повторно.",0
    21.     sz12345    db "12345",0
    22.  
    23. .data?
    24.     hKey       dd ?
    25.     hValue     dd ?
    26.     szBuffer   db 4 dup (?)
    27.  
    28. .code
    29.  
    30. start:
    31.     invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,ADDR SubKey,NULL,KEY_QUERY_VALUE,ADDR hKey     ;open our key
    32.         .if !eax                                                                          ;if it is there we more then likley wrote it
    33.         invoke RegQueryInfoKey, hKey,0,0,0,0,0,0,0,0,ADDR hValue,0,0                  ;get the size of the entry
    34.         invoke RegQueryValueEx, hKey, ADDR szznak,0,0,ADDR szBuffer,ADDR hValue   ;get the value and keep it in the buffer
    35.                 invoke lstrcmp,ADDR szBuffer,ADDR sz12345                                   ;compare it our ran string
    36.                     .if !eax                                                              ;if they are the same it means the user has not modified it
    37.                         invoke MessageBox,NULL,ADDR szHasRun,ADDR szCaption,MB_OK+MB_ICONINFORMATION    ;alert them
    38.                     .endif
    39.         .else
    40.             invoke MessageBox,NULL,ADDR szNoRun,ADDR szCaption,MB_OK+MB_ICONINFORMATION     ;Alert the fact we have never been ran on this machine
    41.                 invoke RegCreateKey,HKEY_LOCAL_MACHINE, ADDR SubKey,ADDR hKey               ;create the key
    42.                     .if !eax                                                                ;make sure it does not fail
    43.                         invoke RegSetValueEx,hKey,ADDR szznak,0,REG_SZ,ADDR sz12345,5     ;set the szRan string in the registry
    44.                     .endif
    45.         .endif
    46.     invoke RegCloseKey , hKey                               ;close the registry key
    47.         invoke ExitProcess,NULL
    48.             ret
    49. end start
    50. +++++++++++++++++++++++++++++++++++++++++++++++
    Не поможет ли кто-нибудь мне его улучшить, а именно:
    a). Прога не функционирует, если ветки в реестре есть, а ключ "12345" не совпадает
    b). Добавить кнопку нет, чтобы при нажатии на неё запись не создавалась
    с). Запись создаётся даже при выходе через "alt F4". Сделать так, чтобы она создавалась искючительно при нажатии на "Ok".

    И, наконец, подсказать книгу, в которой действительно содержится подходящая инфа, позволяющая самостоятельно разобраться с этим.

    Заранее благодарен за любую помощь.
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    MSDN тебе в руки. В крайнем случае SDK. Русский MSDN ты вряд ли найдешь, а вот русский SDK вполне возможно поискать. А вот анлийский учи, иначе весь твой ассемблер будет простым гаданием на кофейной гуще :dntknw:
     
  3. niccolo

    niccolo New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    3
    Это хороший, но не актуальный совет, ибо полезен не на краткосрочный период, сам знаю - НАДО.
    Но до того, я хотел бы получить конкретные ответы на любые мои вопросы, так, чтобы уже сегодня я мог бы что-то делать и понимать, забегая вперёд своей компетентности. Это видишь ли нормально. Так бывает всегда, когда кто-то чего-то существенного достигает. Так атомная бомба , например, была сделана до того, как человек научился понимать детально этот процесс. А говолрю я это потому, что хочу убедить тех, кто захочет мне ответить, не советовать мне не спешить.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    1. Такого нет даже на английском. Только мелкие комменты.
    2. а. Завершаюший ноль.
    2. б. REG_SZ - да, это строка с завершающим нулём. Найти остальное можно в MSDN.
    3. Добавь парамтер MB_YESNO вместо MB_OK и проверяй что возвращает MessageBoxA
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    niccolo
    ну тогда из всего мною сказанного выделю основную фразу, которая тебе уж точно должна помочь: ищи русский SDK! Такое есть в сети! Сам находил когда-то. Там все по-русски описано. Не все конечно, но про реестр тебе хватит. Это вполне краткосрочная перспектива. 30 минут на гугл и скачивание потрать
     
  6. niccolo

    niccolo New Member

    Публикаций:
    0
    Регистрация:
    20 июл 2007
    Сообщения:
    3
    Потрачу, но, т.к. я пока не знаю с чем его едят, то можно уточнение:
    Русский SDK для SubSilver - это то, что нужно? Какой размер он должен иметь? И, если это инфа, то почему её надо устанавливать?
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    niccolo
    1) errlook.exe из поставки студии (или FormatMessage с нужным locale id) - описание ошибок на русском.
     
  8. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Не знаю, что это такое :dntknw: Обычный SDK весит примерно 25 метров. Русский меньше, т.к. он не полный.