我正在编写一个实用程序,需要在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());
}
}
Run Code Online (Sandbox Code Playgroud)
这样可以正常工作,但需要很长时间(我的电脑上有20秒).有没有更快的方法来做到这一点,还是这样做得好?
注册表中有很多信息,正如其他人在这里指出的那样 - 速度可能是一个问题。如果您希望以树状视图显示注册表设置列表以供用户浏览,更好的解决方案可能是首先扫描顶级条目,然后当用户浏览树时,扫描这些条目树节点打开时的子值/设置。
我怀疑这就是微软自己的注册表的工作原理。
| 归档时间: |
|
| 查看次数: |
3832 次 |
| 最近记录: |