我正在编写一个实用程序,需要在 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/