7

HKCR のすべてのレジストリ値のリストを作成する必要があるユーティリティを作成しています。私は再帰関数を使用してこれを行っています:

var list = new Dictionary<string, string>();
Read(Registry.ClassesRoot, list);

static void Read(RegistryKey root, IDictionary<string, string> values)
{
    foreach (var child in root.GetSubKeyNames())
    {
        using (var childKey = root.OpenSubKey(child))
        {
            Read(childKey, values);
        }
    }            

    foreach (var value in root.GetValueNames())
    {
        values.Add(string.Format("{0}\\{1}", root, value), (root.GetValue(value) ?? "").ToString());
    }
}

これは問題なく動作しますが、かなりの時間がかかります (私の PC では 20 秒)。これを行うためのより速い方法はありますか、それともこれで十分ですか?

4

1 に答える 1

1

レジストリには多くの情報があり、他の人がここで指摘しているように、速度が問題になる可能性があります. ユーザーが参照できるようにレジストリ設定のリストをツリーのようなビューで表示する場合は、最初に最上位のエントリをスキャンし、次にユーザーがツリーをナビゲートするときにそれらをスキャンすることをお勧めします。ツリー ノードが開いているときの子の値/設定。

これが、Microsoft 独自の regedit のしくみだと思います。

于 2012-11-26T16:00:18.120 に答える