Сначала: запустите RegQueryValueEx
, чтобы получить тип и необходимый объем памяти:
Однобайтовый код:
DWORD type, size;
vector<string> target;
if ( RegQueryValueExA(
your_key, // HKEY
TEXT("ValueName"),
NULL,
&type,
NULL,
&size ) != ERROR_SUCCESS )
return;
if ( type == REG_MULTI_SZ )
{
vector<char> temp(size);
if ( RegQueryValueExA(
your_key, // HKEY
TEXT("ValueName"),
NULL,
NULL,
reinterpret_cast<LPBYTE>(&temp[0]),
&size ) != ERROR_SUCCESS )
return;
size_t index = 0;
size_t len = strlen( &temp[0] );
while ( len > 0 )
{
target.push_back(&temp[index]);
index += len + 1;
len = strlen( &temp[index] );
}
}
Юникод:
DWORD type, size;
vector<wstring> target;
if ( RegQueryValueExW(
your_key, // HKEY
TEXT("ValueName"),
NULL,
&type,
NULL,
&size ) != ERROR_SUCCESS )
return;
if ( type == REG_MULTI_SZ )
{
vector<wchar_t> temp(size/sizeof(wchar_t));
if ( RegQueryValueExW(
your_key, // HKEY
TEXT("ValueName"),
NULL,
NULL,
reinterpret_cast<LPBYTE>(&temp[0]),
&size ) != ERROR_SUCCESS )
return;
size_t index = 0;
size_t len = wcslen( &temp[0] );
while ( len > 0 )
{
target.push_back(&temp[index]);
index += len + 1;
len = wcslen( &temp[index] );
}
}