void DeleteEntry(bool delete_entries = false, string regex = null)
{
string reg_path = Action.path;
string reg_root = reg_path.Substring(0, reg_path.IndexOf('\\'));
string reg_subkey = reg_path.Substring(reg_path.IndexOf('\\') + 1, reg_path.Length - reg_root.Length - 1);
string reg_entry = Action.name;
if (delete_entries)
{
Dictionary<string, string> dic = RegistryHelper.I.GetNameValues(reg_root, reg_subkey);
foreach (string key in dic.Keys)
{
string val = dic[key];
if (RegistryHelper.I.IsNameExists(reg_root, reg_subkey, key))
{
Worker.I.EnqueTTD(new Model_ThingsToDelete()
{
reg_root = reg_root,
reg_name = key,
reg_subkey = reg_subkey,
reg_name_val = val,
FullPathName = reg_root + "\\" + reg_subkey + "\\" + key,
IsWhitelisted = false,
OverWrite = false,
WhatKind = THINGS_TO_DELETE.registry_name,
command = COMMANDS.winreg,
search = SEARCH.winreg_delete_entries,
level = Action.parent_option.level,
cleaner_name = Action.parent_option.label
});
}
}
}
else
{
//Debug.WriteLine("Deleting " + reg_path);
//RegistryHelper.I.DeleteEntries(reg_root, reg_subkey);
if (RegistryHelper.I.IsSubkeyExists(reg_root, reg_subkey))
{
// enqueue registry for deletion
Worker.I.EnqueTTD(new Model_ThingsToDelete()
{
reg_root = reg_root,
reg_name = reg_entry,
reg_subkey = reg_subkey,
FullPathName = reg_entry == null ?
reg_root + "\\" + reg_subkey :
reg_root + "\\" + reg_subkey + "\\" + reg_entry,
IsWhitelisted = false,
OverWrite = false,
WhatKind = THINGS_TO_DELETE.registry_key,
command = COMMANDS.winreg,
search = SEARCH.none,
level = Action.parent_option.level,
cleaner_name = Action.parent_option.label
});
}
}
}