@Chamalion

Как получить массив всех подключей раздела реестра Windows в C#?

Итак, в данный момент функционал моей программы выглядит так:
Скриншот
5fb97f4164791675245145.png

Вот как я добавил разделы реестра и вложенные в них ключи в 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");
  • Вопрос задан
  • 349 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы