RegistryHelper::writeMultiValues
void RegistryHelper::writeMultiValue(wstring key, wstring valuename, vector<wstring> values)
{
HKEY keyHandle = openKey(key, KEY_SET_VALUE | KEY_WOW64_64KEY);
size_t size = 1;
for (wstring value : values)
size += value.size() + 1;
wchar_t* data = new wchar_t[size];
size_t offset = 0;
for (wstring value : values)
{
value._Copy_s(data + offset, size * sizeof(wchar_t), value.size());
offset += value.size();
data[offset++] = L'\0';
}
data[offset] = L'\0';
LSTATUS status = RegSetValueExW(keyHandle, valuename.c_str(), 0, REG_MULTI_SZ, (const BYTE*)data, (DWORD)(size * sizeof(wchar_t)));
delete data;
RegCloseKey(keyHandle);
if (status != ERROR_SUCCESS)
throw RegistryException(L"Error while writing to registry value " + key + L"\\" + valuename + L": " + StringHelper::getSystemErrorString(status));
}
随手分享,手有余香