Рекурсивный обход реестра - 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);
}
}