
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.218.99.99] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Подскажите, пожалуйста, как средствами WinAPI считать все параметры из заданного раздела реестра, т.е. имя параметра, тип и значение? Я делаю приблизительно так: 1) Открываю нужный раздел функцией RegOpenKeyEx с ключом доступа KEY_ENUMERATE_SUB_KEYS or KEY_QUERY_VALUE 2) Затем получаю информацию о разделе функцией RegQueryInfoKey 3) В цикле вызываю RegEnumValue, вот тут-то у меня и начинаются странности, а именно: при втором проходе цикла значение счётчика цикла изменяется (становится огромным), так же менятеся и переменная отвечающая за Handle открытого раздела, после нескольких проходов цикла программа вообще вываливается с сообщением об ошибке доступа к ОП по указанному адресу. Такое впечатление, что в программе какой-то сдвиг по памяти происходит, но от-куда он?... Если можно, то приведите, пожалуйста, маленький примерчик для чтения параметров с описанием переменных, по-моему я что-то в них напутал... Заранее благодарен. |
Сообщ.
#2
,
|
|
|
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++; } } |
Сообщ.
#3
,
|
|
|
To: bum
Спасибо!!! Ну я же говорил, что с описанием напутал: я szBuf описал как byte, вместо положенного массива байт. Спасибо!!! |