Рекурсивный обход реестра - C#
Формулировка задачи:
Вообщем сижу я тут и думаю как обойьт рекурсивно весь реестр (все ветки) вроде дело в гору а всеже ошибка
Лажа в том что не могу зайти в свою функцию рекурсивно - точнее не могу получить индекс элемента от массива в котором распологаеться список ключей для текущей ветки ПОМОГИТЕ КАК ТУТ?
//попытаемся зайти в первый элемент
// ScanReg(obj[0], true);
Среда пишет ошибку: использование локальной переменной obj которой неприсовено значение
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Win32; namespace Обход_реестра { class Program { static void ScanReg(string key, Boolean flag = false) { string[] obj; RegistryKey hklm = Registry.CurrentUser; if (flag == false) { obj = hklm.GetSubKeyNames(); //получаем список элементов } for (int i = 0; i < hklm.SubKeyCount ; i++) //входим в каждый элемент по списку { //рекрсивно вызываем эту функцию!! ScanReg(obj[i], true); } //попытаемся зайти в первый элемент // ScanReg(obj[0], true); } static void Main(string[] args) { ScanReg(""); } } }
Решение задачи: «Рекурсивный обход реестра»
textual
Листинг программы
static void ScanReg(string key, bool flag = false) { RegistryKey hklm; if (!flag) { hklm = Registry.CurrentUser; } else { hklm = Registry.CurrentUser.OpenSubKey(key); } string[] keys = hklm.GetSubKeyNames(); //получаем список элементов foreach (string K in keys) { if (flag) ScanReg(key + "\\" + K, true); else ScanReg(K, true); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д