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

2024-03-30

我正在编写一个实用程序,需要创建 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 秒)。有没有更快的方法来做到这一点,或者这已经是最好的方法了吗?


注册表中有很多信息,正如其他人在这里指出的那样 - 速度可能是一个问题。如果您希望以树状视图显示注册表设置列表以供用户浏览,更好的解决方案可能是首先扫描顶级条目,然后当用户浏览树时,扫描这些条目树节点打开时的子值/设置。

我怀疑这就是微软自己的注册表的工作原理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

读取所有注册表值的快速方法 的相关文章

随机推荐