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 秒)。これを行うためのより速い方法はありますか、それともこれで十分ですか?