перечислить все значения из подраздела - PullRequest
2 голосов
/ 15 июля 2009

В моем реестре есть подраздел с неизвестным количеством значений.

Я хочу получить все данные из этих значений в указанном подразделе.

как я могу это сделать? Я не знаю названий значений и количества значений.

Я программирую на C.

спасибо!

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

Вот код для получения всех строковых значений a от данного regkey (вы должны открыть этот ключ до и закрыть после использования этой функции.

vector<pair<wstring, wstring>> CRegistryManager::getKeyValues(HKEY regKey)
{
    vector<pair<wstring, wstring>> retValues;

    DWORD numOfValues;
    DWORD maxValueNameLen;
    DWORD maxValueDataLen;
    LONG retCode;

    retCode = RegQueryInfoKey(regKey, NULL, NULL,NULL, NULL, NULL, NULL, &numOfValues, &maxValueNameLen, &maxValueDataLen, NULL, NULL);
    if( (retCode == ERROR_SUCCESS) && (numOfValues != 0) )
    {
        TCHAR* valueName = new TCHAR[maxValueNameLen+1];

        TCHAR* valueData = new TCHAR[maxValueDataLen+1];

        for(int i = 0; i < numOfValues; i++)
        {
            DWORD valueNameBuferSize = maxValueNameLen+1;
            DWORD valueDataBufferSize = maxValueDataLen+1;

            retCode = RegEnumValue(regKey, i, valueName, &valueNameBuferSize, NULL,NULL, (LPBYTE)valueData, &valueDataBufferSize);
            if(retCode == ERROR_SUCCESS)
            {
                auto pair = make_pair(wstring(valueName), wstring(valueData));
                retValues.push_back(pair);
            }
        }
        delete[] valueName;
        delete[] valueData;
    }
    return retValues;
}
2 голосов
/ 15 июля 2009

Вы хотите использовать Win32 API RegEnumValue для перечисления значений реестра подраздела. На MSDN есть пример , аналогичный этому, но для перечисления подразделов реестра.

Вы также можете найти некоторые вспомогательные функции из одного из моих предыдущих ответов здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...