По сути, я хочу перебрать весь реестр Windows HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_CURRENT_CONFIG
и удалить каждый ключ с заголовком или данными, содержащими строку / символ / любой тип данных. Проблема в том, что я понятия не имею, как бы я на самом деле подошел к этому.
Я уже видел фрагменты кода для поиска ключей с таким именем, как:
subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{
dwType = REG_SZ;
if( RegQueryValueEx(hKey,"AVG_TRAY",0,&dwType,(BYTE*)buffer,&dwBufferSize) == ERROR_SUCCESS )
{
cout << "key value is'" << buffer << "'\n";
}
else
cout << "can not query for key value\n";
}
или что-то вроде
int GetPaths()
{
char buffer[255] = {0};
DWORD dwBufferSize = sizeof(buffer);
const char* subkey;
string values[100]; // Max 100 values.
string Paths[100]; // Max 100 paths.
DWORD dwType = 0;
HKEY hKey = 0;
int i=0;
int j=0;
subkey = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,subkey,0,KEY_ALL_ACCESS,&hKey) == ERROR_SUCCESS)
{
dwType = REG_SZ;
/** Here a loop that would call a function
* that would retrieve the name of the first
* value into values[i] (i would be 0 initially)
* and then increment 1 to i and loop again.
* The value would be the next one and its
* name would be save in values[i] (i would be
* 1 this time). It would keep until all the
* values in hKey would have been read.
*/
while( i =< hKey.numberofvalues )
{
GetValueName(from HKey, valuenumber i, into buffer);
values[i] = buffer;
i++;
}
/** Now a loop to get the data of thoose values
* (values[j]) into buffer and then into Paths[j].
*/
while( j =< i )
{
if(RegQueryValueEx(hKey,values[j],0,&dwType,(BYTE*)buffer,&dwBufferSize) == ERROR_SUCCESS)
{
Paths[j] = buffer;
j++;
}
else
cout << "Could not query value from " << hKey << endl;
}
}
else
cout << "Could not open key " << subkey << endl;
cout << "Got paths from registry successfully." << endl;
RegCloseKey(hKey);
}
но они не отвечают на мой вопрос.
Если бы кто-нибудь мог мне помочь, это было бы оценено.
Спасибо.