.386 .model flat,stdcall include \masm32\include\advapi32.inc includelib \masm32\lib\advapi32.lib .const .data? HKey dd ? .data ;_______________ tbuff1 db 128 dup(0) SubKey1 db "Software\имя ключа",0 file_name db "мой раздел",0 .code создаю ключ invoke RegCreateKeyExW, HKEY_CURRENT_USER,addr SubKey1 , 0,0,KEY_ALL_ACCESS,0,0,0, addr HKey invoke RegOpenKeyEx, HKEY_CURRENT_USER, addr SubKey2, 0, KEY_ALL_ACCESS, addr HKey invoke RegSetValueEx, HKey, addr file_name, 0, REG_SZ, offset file_name,100 invoke RegCloseKey, HKey и считать с него значение invoke RegQueryValueExW , HKey ,addr file_name,0,0,offset tbuff1,100 invoke RegCloseKey, HKey end Мужики подскажите что не правильно делаю,ну не получается создать собственный ключ в реестре и все. Заранее благодарен
Код (Text): invoke RegCreateKeyEx,HKEY_CURRENT_USER,ADDR szSubKey,0,ADDR szZero,REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,0,ADDR hKey,0 вот рабочие примеры. перед RegQueryValueEx нужно сначала RegOpenKeyEx.
Спасибо, RamMerLabs с созданием ключа все получилось ,а вот считать значение не получается invoke RegOpenKeyEx, HKEY_CURRENT_USER, addr SubKey2, 0, KEY_ALL_ACCESS, addr HKey invoke RegQueryValueExW , HKey ,addr file_name,0,0,offset tbuff1,100 invoke RegCloseKey, HKey в отладчике OllDbg после invoke RegQueryValueExW , HKey ,addr file_name,0,0,offset tbuff1,100 выдает ошибку . В чем загвоздка не пойму
1) уверены ли вы, что file_name содержит юникод строку? 2) последний параметр - не число, указывающее размер буфера, а указатель на переменную, которая до вызова ф-ии содержит размер буфера, а после вызова - кол-во реально считанных байт.
yuri совсем народ обленилсо. читаем маны. там предельно понятно написано. Код (Text): rv:DWORD, bsize:DWORD invoke RegOpenKeyEx, HKEY_CURRENT_USER, addr szSubKey, 0, KEY_READ, addr hKey invoke RegQueryValueEx, hKey, addr szKey, 0, addr rv, addr dValue, addr bsize у тебя спросили код ошибки, а не описание. к тому же неверное. если объявлена переменная file_name, то указатель на неё получить можно. (что и делает addr)
yuri Ну главное, W на конце означает, что имя раздела в Unicode надо задавать. 100 - Означает, что длину буфера будут искать по адресу 100. Это приведет к ошибке. Кстати offset почему? Короче внимательным надо быть.
Большое спасибо RamMerLabs, разобрался, ключ создается,значение считывается. Я ведь только учусь. Еще раз спасибо кто помогал