快速读取所有注册表值的方法

我正在编写一个实用程序,需要在HKCR中创建所有注册表值的列表。 我使用递归函数执行此操作:

var list = new Dictionary(); Read(Registry.ClassesRoot, list); static void Read(RegistryKey root, IDictionary 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秒)。 有没有更快的方法来做到这一点,还是这样做得好?

注册表中有很多信息,而其他人已在此处注意到 – 速度可能是一个问题。 如果您希望在树状视图中显示注册表设置列表以供用户浏览,则更好的解决方案可能是先扫描顶级条目,然后在用户浏览树时进行扫描,以便扫描这些树节点打开时的子值/设置。

我怀疑这是微软自己的注册表的工作方式。