Как в FASM 1.65 или в Dev-C++ 4.9.9 внести данные в системный реестр?

Тема в разделе "WASM.BEGINNERS", создана пользователем Superplaneta, 15 авг 2006.

  1. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    censored
    я серьезно!

    REG_DWORD, то и последний параметр должен = 4 (4 байта = двойное слово). Соответственно переменная в скобках должна иметь тип DWORD
    и содержать значение, которое нужно засунуть в реестр.
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Странное заявление..

    Посмотрел бы в отладчике лучше.

    LONG RegSetValueEx(
    HKEY hKey,
    LPCTSTR lpValueName,
    DWORD Reserved,
    DWORD dwType,
    const BYTE* lpData,
    DWORD cbData
    );
     
  3. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    Ну. А как мне это поправить? Я тока учусь.
    Не могу найти достаточно примеров на FASM, чтоб разобраться.

    В мсдн написано что это string-based тип. Но как именно делать?
     
  4. Aquila

    Aquila Самурай дзена

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
    Superplaneta
    Попробуй почитать теорию.
     
  5. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    Не проше пример куска кода написать? Теорию пытаюсь. но не всегда на практике выходит.
     
  6. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    так ли это? :)
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Ты не пытайся, а читай.
     
  8. Aquila

    Aquila Самурай дзена

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    1.467
    Адрес:
    Russia, Moscow
    Superplaneta
    Не проще, если только ты не напишешь их сам.
     
  9. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    censored
    Наверное, так же выпрашивал готовый код на форумах.
     
  10. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    IceStudent

    :)
    Дело в том что писал я на С, а изучал не только в колледже и институте,
    но и по огромному количеству примеров. Я видел как это делается и
    так разбирался достаточно быстро. Хотел изучить FASM, но примеров
    всётаки мало. А в тех что есть нет простых операций с реестром и
    файлами (работа с файлами для Linux). Самые приметивные, а что
    более сложное, так это можно самому довести ... Главное дать старт ...

    А то что я выпрашиваю, так просто хотелось бы увидеть и понять,
    а не где так и не нашел.

    Да вы правы я профессиональный программист и понимаю что проблема
    состоит в том что нужно 4 в дворде а по умолчанию 1.

    Но как задать в этом тип дворд? Былабы по фасму дока :) А там лиш
    более практические рассуждения аспиранта математика!

    Но Томасу я благодарен! Это самый класнный ассемблер! Вот осваиваю!
     
  11. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    P.S.
    Извините
     
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Просто изучать надо не по примерам. Изучить сам ассемблер по книгам/статьям, изучить Win32 API по справке. Если что, смотреть примеры на си, если ты его понимаешь. А общение с системой что на асме, что на си - одинаково, отличается лишь синтаксис.
     
  13. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    вот именно синтаксис и хотел понять. на fasm пимеров мало!
     
  14. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    На С достаточно сказать что в
    invoke RegSetValueEx,eax,"ContigFileAllocSize",0,REG_DWORD,dword,4

    dword = 4 и имет знаение 1. А как в FASM это сказать???

    Простая тема - простой ответ - а какая дискусия огромная :)
     
  15. Superplaneta

    Superplaneta New Member

    Публикаций:
    0
    Регистрация:
    15 авг 2006
    Сообщения:
    44
    БЛИН!!!

    #include <cstdlib>
    #include <iostream>
    #include <shlwapi.h>
    #pragma comment(lib,"shlwapi.lib")

    using namespace std;

    int main(int argc, char *argv[])
    {


    SHSetValue(HKEY_LOCAL_MACHINE, "Software\\Mircosoft\\Windows\\CurrentVersion\\Run",
    "Soft", REG_SZ, "123.exe",
    strlen("123.exe"));

    return EXIT_SUCCESS;
    }

    ГДЕ ОШИБКА???
     
  16. xlinuks

    xlinuks New Member

    Публикаций:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    181
    Ты просто допустил ошибку при написании слова "Microsoft", посмотри внимательно и поменяй буквы местами:
    Код (Text):
    1. SHSetValue(HKEY_LOCAL_MACHINE, "Software\\Mircosoft\\Windows\\CurrentVersion\\Run",
     
  17. Nail

    Nail RustyNail

    Публикаций:
    0
    Регистрация:
    16 июл 2006
    Сообщения:
    10
    Вот 100% рабочий сорец под FASM

    Код (Text):
    1. format PE GUI
    2. include 'win32a.inc'
    3.  
    4.         invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,key,0,KEY_SET_VALUE,hKey
    5.         invoke RegSetValueEx,[hKey],name,0,REG_SZ,path,[pathsize]
    6.         invoke MessageBox,HWND_DESKTOP,text,head,MB_OK
    7.         invoke RegCloseKey,[hKey]
    8.         invoke [b]IceStudent[/b]
    9. ExitProcess,0
    10.  
    11.  
    12. key   db   'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0
    13. path db 'C:\WINDOWS\notepad.exe',0
    14. name db 'netagent',0
    15. pathsize dd 22  ; размер строки <path>
    16. hKey dd ?
    17. text db "Hi! I'm the example program!",0
    18. head db "Win32 Assembly",0
    19.  
    20. import kernel,\
    21.         ExitProcess,'ExitProcess'
    22.  
    23.  
    24.   import advapi,\
    25.          RegOpenKeyEx,'RegOpenKeyExA',\
    26.          RegSetValueEx,'RegSetValueExA',\
    27.          RegCloseKey,'RegCloseKeyA'
    28.  
    29.   import user,\
    30.          MessageBox, 'MessageBoxA'
    31.  
    32. data import
    33.  
    34.   library kernel,'KERNEL32.DLL',\
    35.           advapi,'ADVAPI32.DLL',\
    36.            user, 'USER32.DLL'
    37. end data
    Вот тебе под Dev-C++
    Код (Text):
    1. #include <stdio.h>
    2. #include <windows.h>
    3.  
    4. int main(int argc, char* argv[])
    5. {
    6.     HKEY hKey;
    7.              RegOpenKeyEx(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_SET_VALUE,&hKey);
    8. RegSetValueEx(hKey,"Start",0,REG_SZ,"C:\\WINDOWS\\notepad.exe",strlen("C:\\WINDOWS\\notepad.exe"));
    9.     RegCloseKey(hKey);
    10.     return 0;
    11. }
    Но думаю тебе это не поможет
    А вообще IceStudent уже ясно сказал, что тебе делать надо