我正在编写一个实用程序,需要在 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());
}
}
这很好用,但需要很长时间(在我的电脑上是 20 秒)。有没有更快的方法来做到这一点,或者这是否尽可能好?