I need to query the registry through keywords and return all matching registry addresses, but I cannot access the following branches with this function。
HKEY_LOCAL_MACHINE\SOFTWARE\abc\test
HKEY_LOCAL_MACHINE\SYSTEM\test
WHY? I don't know where to write the question。 Thanks.
keywork="test"
I am in VS, have used administrator rights.
public static DataTable SearchRegistry(string keyword)
{
// List<string> matchedAddresses = new List<string>();
DataTable dataTable = new DataTable("MyTable");
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("HOST", typeof(string));
try
{
SearchRegistryKeys(Registry.ClassesRoot, keyword, "", dataTable);
SearchRegistryKeys(Registry.CurrentUser, keyword, "", dataTable);
SearchRegistryKeys(Registry.LocalMachine, keyword, "", dataTable);
SearchRegistryKeys(Registry.Users, keyword, "", dataTable);
SearchRegistryKeys(Registry.CurrentConfig, keyword, "", dataTable);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
return dataTable;
}
public static void SearchRegistryKeys(RegistryKey key, string keyword, string currentPath, DataTable dataTable)
{
string registername = key.Name;
foreach (string subKeyName in key.GetSubKeyNames())
{
using (RegistryKey subKey = key.OpenSubKey(subKeyName))
{
if (subKey != null)
{
if (subKeyName.ToLower().Contains(keyword) )
{
// dataTable.Rows.Add(subKeyName);
dataTable.Rows.Add($"{currentPath}\\{subKeyName}", "");
}
SearchRegistryKeys(subKey, keyword, $"{currentPath}\\{subKeyName}", dataTable);
}
}
}
}
【erro msg】:The requested registry access is not allowed