its*_*ohn 2 c++ registry visual-studio-2010 visual-c++
有一个REG_MULTI_SZ值,我想在一个字符串数组中,以便我的程序可以用它们做其他事情.我从来没有使用过C++来访问注册表,所以在按照一些例子后我有点迷失了.我正在使用VS10.
有一个简单的方法吗?谢谢.
第一:运行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] );
}
}
Run Code Online (Sandbox Code Playgroud)
统一:
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] );
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3472 次 |
| 最近记录: |