На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> Параметры (имя, тип, значение) реестра? , Как получить имя, тип, значение?
    Здравствуйте.
    Подскажите, пожалуйста, как средствами WinAPI считать все параметры из заданного раздела реестра, т.е. имя параметра, тип и значение?
    Я делаю приблизительно так:
    1) Открываю нужный раздел функцией RegOpenKeyEx с ключом доступа KEY_ENUMERATE_SUB_KEYS or KEY_QUERY_VALUE
    2) Затем получаю информацию о разделе функцией RegQueryInfoKey
    3) В цикле вызываю RegEnumValue, вот тут-то у меня и начинаются странности, а именно: при втором проходе цикла значение счётчика цикла изменяется (становится огромным), так же менятеся и переменная отвечающая за Handle открытого раздела, после нескольких проходов цикла программа вообще вываливается с сообщением об ошибке доступа к ОП по указанному адресу. Такое впечатление, что в программе какой-то сдвиг по памяти происходит, но от-куда он?...
    Если можно, то приведите, пожалуйста, маленький примерчик для чтения параметров с описанием переменных, по-моему я что-то в них напутал...
    Заранее благодарен.
      DWORD dwvalueSize = 64;
      DWORD dwvalueSize1 = 64;
      LPTSTR szValue = new TCHAR[dwvalueSize];
      LPBYTE szBuf = new BYTE[dwvalueSize];
      LPDWORD lpType=0;
      LONG lRes = ERROR_SUCCESS;
      int Kol;


      Kol=0;
      while(lRes == ERROR_SUCCESS)
      {
      dwvalueSize = 64;
      dwvalueSize1 = 64;
      lRes = RegEnumValue(
      hKey, // handle of key to query
      Kol,
      szValue, // address of buffer for value name string
      &dwvalueSize, // address for size of value name buffer
      NULL, // reserved
      lpType, // address of buffer for type code
      szBuf, // address of buffer for value data
      &dwvalueSize1 // address for size of data buffer
      );

      if (lRes == ERROR_SUCCESS)
      {....
      Kol++;
      }

      }
        To: bum
        Спасибо!!! Ну я же говорил, что с описанием напутал: я szBuf описал как byte, вместо положенного массива байт. Спасибо!!!
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0227 ]   [ 16 queries used ]   [ Generated: 2.05.24, 11:12 GMT ]