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

标签 c# .net registry

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

最佳答案

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

我怀疑这就是 Microsoft 自己的注册表编辑器的工作方式。

关于c# - 读取所有注册表值的快速方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13386017/

相关文章:

C# ASP.NET 重构代码 |如何/指南

c# - 如何在 Blazor WebAssembly 项目中使用 C# 9?

c# - 你如何按值对字典进行排序?

Docker 注册表镜像 - 持久性

C++ 写注册表

c# - 在 C# 中为游戏创建自定义消息框

c# - 如何在 VS2010 中创建 .NET2 兼容的应用程序?

c# - 什么是 Microsoft.DependencyValidation.Analyser,为什么 Visual Studio 2017 会强制安装包?

.net - VB 中的 if() 函数和委托(delegate)

NPM 坚持使用错误的注册表 URL