【问题标题】:C#: Find a key without knowing where it isC#:在不知道它在哪里的情况下找到一个键
【发布时间】:2014-02-09 04:48:24
【问题描述】:

我想先强调一下我是 C# 的新手。

我正在尝试制作一个程序来查找和编辑注册表值,以便使用以下方法禁用 CPU 内核停放:Registry Edit

问题是我知道钥匙的开始:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\PowerSettings\

但不是下一部分,但我知道之后的部分:

0cc5b647-c1df-4637-891a-dec35c318583

如果它看起来像这样:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Power\PowerSettings\<UNKNOWN>\0cc5b647-c1df-4637-891a-dec35c318583

如何找到使用注册表和注册表键?我尝试遍历所有子键,但我得到了一个异常,因为我得到的都是空的。

任何建议表示赞赏。

【问题讨论】:

  • 你能把你写下的代码放到注册表中循环吗??

标签: c# registry registrykey


【解决方案1】:

您可以使用递归来查找SubKey

private RegistryKey SearchSubKey(RegistryKey Key,String KeyName)
{
    foreach (String subKey in Key.GetSubKeyNames())
    {
        RegistryKey key1 = Key.OpenSubKey( subKey);

        if (subKey.ToUpper() == KeyName.ToUpper())
            return key1;
        else
        {
            RegistryKey mReturn = SearchSubKey(key1, KeyName);
            if (mReturn != null)
                return mReturn;
        }
    }
    return null;
}

调用这个函数

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SYSTEM\ControlSet001\Control\Power\PowerSettings\");
RegistryKey SubKey = SearchSubKey(key, "0cc5b647-c1df-4637-891a-dec35c318583");

此函数递归搜索主键中的所有子键。如果要搜索到特定级别,则必须在函数中添加该逻辑。

【讨论】:

  • 这是完美的,正是我想要的。它工作了 100%!
【解决方案2】:

我猜你忘了以适当的方式提及注册表项名称。这是带出输出的一段代码:

class Program
{
    static void Main(string[] args)
    {
        RegistryKey key = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion");
        foreach (var v in key.GetSubKeyNames())
        {
            RegistryKey key1 = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\" + v);
            foreach ( var v1 in key1.GetSubKeyNames())
            {
                if (v1 == "{00EC8ABC-3C5A-40F8-A8CB-E7DCD5ABFA05}")
                Console.WriteLine(key1);
            }
        }
    }
}

如果可行,请告诉我。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多