Итак, в данный момент функционал моей программы выглядит так:
Вот как я добавил разделы реестра и вложенные в них ключи в treeView:
treeView_registryKeys.Nodes.Add(new TreeNode("Computer"));
RegistryKey[] regKeyArray = new RegistryKey[] { Registry.ClassesRoot,
Registry.CurrentUser,
Registry.LocalMachine,
Registry.Users,
Registry.CurrentConfig
};
foreach (RegistryKey key in regKeyArray)
{
TreeNode node = new TreeNode() { Name = "node", Text = key.ToString() };
treeView.FindNodeByName(treeView_registryKeys.Nodes[0], "Computer").Nodes.Add(node);
}
String[] regClassesRootKeyArray = new String[1000];
regClassesRootKeyArray = Registry.ClassesRoot.GetSubKeyNames();
foreach (String subKey in regClassesRootKeyArray)
{
TreeNode node = new TreeNode() { Name = "node", Text = subKey };
treeView.FindNodeByName(treeView_registryKeys.Nodes[0], "HKEY_CLASSES_ROOT").Nodes.Add(node);
}
Как вы видете, чтобы получить массив подключей корневого ключа (раздела) реестра, необходимо использовать метод:
Registry.[название корневого раздела реестра].GetSubKeyNames()
Я так же хочу получить массив подПодКлючей этих подКлючей (например, подПодКлчючи подКлюча SOFTWARE), а затем их подПодПодКлючи и так до самого конца вложенности реестра. Однако данный метод работает только для подКлючей (корневых разделов реестра). Какой метод мне использовать в данном случае?
P.S. На самом деле этот метод работает для любых ключей (на момент написания вопроса я не знал). Просто если у вас есть имя ключа String, то, чтобы получить его подключи, нужно сначала "открыть" этот ключ, то есть получить его, только в виде RegistryKey, а не String. Для этого нужно использовать метод [названия_корневого_раздела(ключа)].OpenSubKey(название ключа типа String). Это можно приравнять к переменной типа RegistryKey. Например, RegistryKey subKeyOpened = Registry.CurrentUser.OpenSubKey("Software");