实现效果:

知识运用:
RegistryKey类的OpenSubKey GetValueNames GetSubKeyNames 方法
实现代码:
private void button1_Click(object sender, EventArgs e)
{
RegistryKey rKey = Registry.LocalMachine.OpenSubKey("SOFTWARE");
Search(rKey,textBox1.Text);
}
/// <summary>
/// 实现搜索指定子键下的所有键值对
/// </summary>
/// <param name="rkMain">要搜索的主键</param>
/// <param name="con">主键下的指定子键</param>
private void Search(RegistryKey rkMain,string con)
{
string[] subKeyNames; //存放子项
string[] subValueNmaes; //存放键值对
RegistryKey rk = rkMain.OpenSubKey(con);
if (rk != null) //如果操作成功
{
subValueNmaes = rk.GetValueNames();
foreach(string s in subValueNmaes) //遍历数组
{
if(s!="")
listBox1.Items.Add(s); //添加至列表框
}
subKeyNames = rk.GetSubKeyNames();
foreach (string st in subKeyNames) //遍历子项
{
Search(rk,st); //递归调用
}
}
}