Я пытаюсь разработать программу на c # для вывода всего дерева LocalMachine на консоль. До сих пор я только что смог получить подразделы HKEY_LOCAL_MACHINE, но не более того. Я относительно уверен, что мне нужно использовать какую-то рекурсию здесь, чтобы получить все содержимое подразделов и их подразделов и так далее. Я просто не знаю, как это сделать. Вот что у меня есть сейчас:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
namespace PrintLocalMachine
{
class PrintLocalMachine
{
static void Main(string[] args)
{
Console.Out.WriteLine(Registry.LocalMachine.Name);
string[] subkeynames = Registry.LocalMachine.GetSubKeyNames();
foreach (string subkey in subkeynames)
{
try
{
RegistryKey rk = Registry.LocalMachine.OpenSubKey(subkey);
Console.Out.WriteLine(rk.Name);
string[] subkeynames2 = rk.GetSubKeyNames();
foreach (string s in subkeynames2)
{
recurse(s, rk);
}
}
catch (Exception e) { }
}
}
private static void recurse(string sub, RegistryKey rk)
{
RegistryKey rk2 = Registry.LocalMachine.OpenSubKey(sub);
Console.Out.WriteLine(rk2.Name);
string[] subkeynames3 = rk.GetSubKeyNames();
foreach(string s2 in subkeynames3){
recurse(s2, rk2);
}
}
}
}
Может ли кто-нибудь объяснить, как мне поступить? Мне просто нужно указать в правильном направлении, я просто ударился об стену с этим.
РЕДАКТИРОВАТЬ: я немного изменил и обновил код; обновленный код висит на HKEY_CURRENT_MACHINE \ SAM, просто печатая его снова и снова, пока StackOverflowException