遍历注册表并获取所有子项和C#中RegistryKey中的值

开拓者

我需要遍历注册表并获取所有子项和所有值。

这就是我一直在尝试的(仅获取所有子项):

public void OutputRegKey(RegistryKey Key)
{
    foreach (string keyname in Key.GetSubKeyNames())
    {
        try
        {
            using (RegistryKey key2 = Key.OpenSubKey(keyname))
            {
                foreach (string valuename in Key.GetValueNames())
                {
                    comboBox1.Items.Add(valuename);
                    OutputRegKey(key2);
                }
            }
         }
         catch
         {

         }
    }
}

如何获得所有值?我需要做两种方法:一种获取所有子项,另一种获取所有值。我只要求一个获得所有值。谢谢你。

PS:这不是功课,也不是与学者有关。这是个人的东西。

伊恩

一旦给出了RegistryKey,你可以很容易地拿到钥匙的ValueNames通过Key.GetValueNames(),并获得每一个单独的按键的的Value每一个ValueNameKey.GetValue(valueName)该会returnobject

借用您的代码进行详细说明,这里是应如何对其进行修改,

private void processValueNames(RegistryKey Key) { //function to process the valueNames for a given key
    string[] valuenames = Key.GetValueNames();
    if (valuenames == null || valuenames.Length <= 0) //has no values
        return;
    foreach (string valuename in valuenames) {
        object obj = Key.GetValue(valuename);
        if (obj != null)
            comboBox1.Items.Add(Key.Name + " " + valuename + " " + obj.ToString()); //assuming the output to be in comboBox1 in string type
    }
}

public void OutputRegKey(RegistryKey Key) {
    try {
        string[] subkeynames = Key.GetSubKeyNames(); //means deeper folder
        if (subkeynames == null || subkeynames.Length <= 0) { //has no more subkey, process
            processValueNames(Key);
            return;
        }
        foreach (string keyname in subkeynames) { //has subkeys, go deeper
            using (RegistryKey key2 = Key.OpenSubKey(keyname))
                OutputRegKey(key2);
        }
        processValueNames(Key); 
    } catch (Exception e) {
        //error, do something
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

列出和删除C#中的注册表子项

来自分类Dev

C#获取注册表子项的值

来自分类Dev

在注册表子项中搜索值

来自分类Dev

C ++-从注册表读取值中获取空值

来自分类Dev

在C#中删除单个注册表值

来自分类Dev

使用C#删除注册表项中的所有值

来自分类Dev

使用C#删除注册表项中的所有值

来自分类Dev

在C中更改注册表值

来自分类Dev

尽管具有 C# 管理员权限,但无法为注册表子项创建/写入值

来自分类Dev

从注册表中的DWORD获取十进制值

来自分类Dev

注册表子项不可见?C#

来自分类Dev

Windows中的64位和32位注册表问题(在C#中编程)

来自分类Dev

从注册表C#获取参数

来自分类Dev

在C ++中枚举HKEY_LOCAL_MACHINE \ SOFTWARE中的注册表子项

来自分类Dev

什么是注册表中的“枚举子项”和“通知”权限?

来自分类Dev

使用C#测试注册表中是否存在DWORD值

来自分类Dev

不使用CLSID和C中的注册表获取COM对象的DLL文件

来自分类Dev

无法在注册表中查看certian子项

来自分类Dev

C#如何从注册表中读取MultiString

来自分类Dev

如何遍历每个表中的所有表和字段以获取丢失值的百分比

来自分类Dev

在注册表中搜索多个值

来自分类Dev

无法删除注册表中的值

来自分类Dev

从自引用表中获取所有子项(子代,子代)和父代

来自分类Dev

从自引用表中获取所有子项(子代,子代)和父代

来自分类Dev

无法通过系统注册表中的递归打印子项的子项

来自分类Dev

PHP和MySQL:从表中获取所有值?

来自分类Dev

备份和恢复所有注册表

来自分类Dev

在PowerShell中,如何获取具有特定属性的所有注册表项?

来自分类Dev

注册表中字符串值和二进制值之间的区别

Related 相关文章

热门标签

归档